Pourquoi Amazon CloudFront ne met-il pas les fichiers en cache selon la durée que j'ai spécifiée ?

Dernière mise à jour : 24/11/2021

Je souhaite spécifier la durée de mise en cache des objets par la distribution Amazon CloudFront et j'ai donc ajouté des en-têtes Cache-Control ou Expires sur l'origine. Toutefois, CloudFront ne met pas les objets en cache selon la durée que j'ai spécifiée ou ne les met pas en cache du tout. Pourquoi cela arrive-t-il ?

Résolution

Assurez-vous que les directives que vous avez définies pour les en-têtes Cache-Control ou Expires ne sont pas en conflit les unes avec les autres. La bonne pratique est d'utiliser la directive max-age du Cache-Control max-age au lieu de l'en-tête Expires. Si vous spécifiez des valeurs pour les deux, CloudFront utilise uniquement la valeur que vous avez définie pour Cache-Control max-age.

En outre, vérifiez que les paramètres Minimum TTL (durée de vie minimale), Default TTL (durée de vie par défaut) et Maximum TTL (durée de vie maximale) que vous avez définis sur la distribution CloudFront ne sont pas en conflit avec les en-têtes Cache-Control ou Expires.

Si ces paramètres de durée de mise en cache sont en conflit les uns avec les autres, CloudFront peut ne pas mettre en cache les objets pendant la durée définie ou CloudFront peut ne pas mettre en cache du tout. Évitez ces exemples de paramètres de durée de cache, qui sont en conflit les uns avec les autres :

  • Si vous définissez la durée de vie maximale sur cinq minutes (300 secondes) et l'en-tête Cache-Control max-age sur une heure (3 600 secondes), CloudFront met l'objet en cache pendant cinq minutes au lieu d'une heure.
  • Si vous définissez l'en-tête Cache-Control max-age sur trois heures et l'en-tête Expires sur un mois, CloudFront met l'objet en cache pendant trois heures au lieu d'un mois.
  • Si vous définissez les durées de vie minimale, par défaut et maximale sur 0 seconde, CloudFront vérifie toujours qu'il dispose du contenu le plus récent depuis l'origine.

Important : si vous mettez à jour une ressource d'origine avec un en-tête de mise en cache, CloudFront reflète les modifications uniquement après avoir effectué une nouvelle demande auprès de l'origine. CloudFront fait une nouvelle demande à votre origine lorsque la ressource mise en cache expire dans les emplacements périphériques. Ensuite, votre distribution reçoit une nouvelle demande pour la ressource. Si vous avez besoin que CloudFront reflète la mise à jour avant la configuration d'expiration de la ressource mise en cache, vous pouvez invalider le cache.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?