Contexte
J'héberge un site statique sur S3, avec CloudFront au-dessus. Le problème que j'ai est avec mes fichiers HTML.
Selon la FAQ de CloudFront :
Amazon CloudFront utilise ces en-têtes de contrôle du cache pour déterminer la fréquence à laquelle il doit vérifier l'origine pour une version mise à jour de ce fichier
Ce que j'ai fait jusqu'à présent
Dans cet esprit, j'ai défini les fichiers HTML de mon compartiment S3 pour les ajouter aux en-têtes suivants:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Lors de mon premier appel à mon samplefile.htm
, je vois les en-têtes de réponse suivants (j'ai exclu les en-têtes évidents (par exemple Content-Type
) afin de rester au point:
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
Comme vous pouvez le voir, mon en- Cache-Control
tête est là-dedans. Le problème est que si je mets à jour ce fichier et le rafraîchis, j'obtiens le contenu mis en cache (plutôt que le dernier fichier), et je peux voir que CloudFront sert sa version mise en cache en regardant les en-têtes de réponse:
X-Cache:Hit from cloudfront
Résumé / question
Compte tenu de ce qui précède, comment puis-je obtenir la récupération automatique du dernier HTML lors de l'utilisation de CloudFront?
Selon sa FAQ, je devrais être capable de le faire avec des en-têtes Cache-Control, mais je n'arrive pas à faire fonctionner cela.
Suite aux réponses ci-dessous
À la fin, j'ai décidé de changer mon www CNAME pour pointer directement vers mon compartiment S3. Puis ajouté un nouveau CNAME appelé "statique", qui pointe vers CloudFront.
Cela signifie que HTML est directement de S3, qui a ensuite toutes ses références CSS / JS / IMG pointant vers static.mydomain.com