Utilisation forcée CloudFront Pour transférer le dernier fichier HTML de S3

Fond

Je place un site statique sur S3 de CloudFront Haut. J'ai un problème avec mes fichiers HTML.

Selon
http://aws.amazon.com/cloudfro ... files
:

Amazon CloudFront Utilisez ces en-têtes d'éléments de contrôle d'encaisse pour déterminer la fréquence nécessaire pour vérifier la source de la version mise à jour de ce fichier.

Ce que j'ai encore fait

Avoir cela à l'esprit, j'ai installé des fichiers HTML dans mon S3 Bucket, Pour ajouter les titres suivants:

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT

Avec mon premier appel à mon

samplefile.htm

, Je vois les en-têtes de réponse suivants (J'ai exclu des titres évidents (par exemple,

Content-Type

), Suivre le sujet:

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

Cache-Control

Titre là-bas. Le problème est que si je mettez à jour ce fichier et mise à jour, je reçois du contenu mis en cache (pas le dernier fichier), Et je vois que CloudFront Sert sa version mise en cache, en regardant les titres de réponses:


X-Cache:Hit from cloudfront

Résumé / question

Compte tenu de ce qui précède, comme je peux obtenir automatiquement obtenir la dernière version HTML utilisant CloudFront?

Selon ses questions fréquemment posées, je peux le faire avec des titres Cache-Control, Mais je ne peux pas le faire fonctionner.

Suivre les réponses ci-dessous

En fin de compte, j'ai décidé de changer mon www CNAME, De sorte qu'il a pointé directement à mon panier S3. Puis ajouté nouveau CNAME intitulé «static», Indiquant sur CloudFront.

Cela signifie que HTML directement de S3, dans lequel tous les liens CSS / JS / IMG pointer vers static.mydomain.com
Invité:

Catherine

Confirmation de:

Je crois que les réponses en ce moment, bien que ce soit correct à cette époque, sont maintenant obsolètes parce que Cloudfront Soutient maintenant le minimum TTL, égal 0, et tentative source OP utilisation cache-age = 0 Maintenant, cela devrait fonctionner.

Vous pouvez étudier si ces autres titres utilisent pour contrôler le Cashem, afin de donner le résultat que vous recherchez. - Vous pourriez avoir besoin que max-age. Vous voulez probablement Cloudfront Vérifié S3, Pour voir si le fichier a changé HTML. Si oui, Cloudfront Peut obtenir et retourner un nouveau fichier. Sinon, il peut servir le client d'un cache existant. (Sauvegarde de bande passante S3 et servir le client plus rapidement et plus localement).

Une tâche Cloudfront - Servez le contenu mis en cache, oui, mais il allume maintenant le contenu qui change parfois, mais peut être mis en cache s'il n'a pas changé.

P.s. Demande des lignes fonctionnent également avec Cloudfront (Si vous êtes configuré "Comportement" pour la source correspondante - Une autre nouvelle fonctionnalité), Cependant, certains serveurs de proxy peuvent toujours ne pas caresser aucun fichier avec des chaînes de requête.

Guide du développeur Amazon: validité
http://docs.amazonwebservices. ... .html

Babette

Confirmation de:

Tout d'abord, l'objectif Cloudfront - Maintenir le contenu mis en cache - Si vous essayez de servir du contenu non équipé de Cloudfront, Il sera plus lent que de l'entretenir directement de S3, Presque dans tous les cas (Quelque chose comme le contenu du streaming sera une exception). Réfléchissez un instant ce qui devrait arriver à maintenir le contenu de Cloudfront - Il doit être obtenu à partir du serveur source à l'emplacement, qui est géographiquement proche de l'utilisateur, ce qui signifie pour une demande où Cloudfront Doit obtenir du contenu du serveur source , Vous ajoutez un délai supplémentaire dans la requête et l'utilisateur obtient le contenu plus lent. Ce n'est que lorsque le contenu devient disponible sur la périphérie, les demandes suivantes sont effectuées plus rapidement.

La meilleure approche de ce problème - Changer les noms de fichiers lors de la mise à niveau de la page - Ça va forcer Cloudfront Supprimer le nouveau contenu. Encore une fois, gardez à l'esprit que Cloudfront Habituellement utilisé pour les fichiers multimédia. (y compris des images) et style / javascript - Et pas tellement pour html. En substance, votre code HTML sera sur S3, Et vos images - sur Cloudfront - Avec des modifications apportées par vous, vous pouvez modifier le nom du fichier dans Cloudfront (par exemple, file-v1.jpg, file-v2.jpg etc.). Un autre moyen courant - Activez une chaîne de requête avec des informations de version.

Gardez également à l'esprit que Cloudfront ne sert pas comprimé avec gzip Contenu, qui peut conduire à une réponse plus lente que du serveur habituel (Bien que dans votre cas S3 n'identifie également pas les navigateurs qui soutiennent gzip).

Enfin, si vous voulez, vous pouvez utiliser l'annulation pour forcer Cloudfront Refuser votre copie existante et obtenez un nouveau sur le serveur source. Cependant, note que Cloudfront te donne seulement 1000 annulations gratuites par mois, après quoi le coût est 0,005 Dollar pour l'annulation.

Le temps minimum pendant lequel Cloudfront stockera le contenu -
http://aws.typepad.com/aws/201 ... .html
, Bien que la valeur par défaut soit installée 24 heure. Par conséquent, j'essaierais d'installer max-age Au moins sur 3600. Considérez aussi le titre s-maxage (Pour le général, c'est-à-dire le contenu traité). Amazon Recommander
http://www.mnot.net/cache_docs/
Manuel de keching.

Était
https://forums.aws.amazon.com/ ... 77954
Avec cela, fixé il y a quelques jours

Hannah

Confirmation de:

Ne sait pas comment CloudFront Traite le titre ainsi que le vôtre, mais si vous ne spécifiez pas les en-têtes, le temps de mise à jour de l'objet par défaut est 24 heure.

Une des choses que vous pouvez faire pour mettre à jour les objets, - Cela le rend invalide. Suivez le lien ci-dessous pour plus d'informations.
http://blog.cloudberrylab.com/ ... .html

Pour répondre aux questions, connectez-vous ou registre