2017-08-27 4 views
1

Nous avons un site statique hébergé dans S3 et livré avec CloudFront. Le site fonctionne mais le déploiement des mises à jour prend de longues heures ou plus. Plus précisément, la modification du chemin d'origine ne se reflète pas sur les emplacements de bord presque aussi rapidement que souhaité.Changer le "chemin d'origine" dans CloudFront prend beaucoup de temps

Voici ce que nous essayons de réaliser ...

seau Notre S3 est configuré pour héberger un site Web. Il stocke plusieurs versions du même site. Il y a un sous-répertoire par tag git. Par exemple:

/git-v1 
/git-v2 
/git-v3 
.. 

L'objectif est de dire à CF de commencer à diffuser une nouvelle version du site par paramètre de chemin d'origine. Nous ne voulons pas invalider les anciens objets, continuez simplement à avancer la version en créant un nouveau répertoire et en pointant CF dessus. L'état sous Distributions CloudFront affiche "Déployé" pendant une longue période, mais les emplacements de bord continuent d'ignorer le nouveau chemin d'origine.

Toute idée visant à faire en sorte que CF commence à servir plus rapidement le nouveau sous-répertoire serait grandement appréciée.

enter image description here

+1

Après avoir modifié le paramètre Chemin d'origine, effacez-vous le cache CloudFront? –

+0

C'est la partie que je suis confus. Je ne mets pas à jour les objets existants. Selon le manuel des FC, "Invalidation des objets les supprime des caches de bord CloudFront Une méthode plus rapide et moins coûteuse consiste à utiliser des noms d'objets ou de répertoires versionnés." Donc, ne devrait-on pas changer le chemin d'origine? – Debriter

+0

Le type de version dont il est question implique de changer l'adresse URL demandée, comme si votre page Web demandait 'style-v1.css', puis vous l'avez changé en' style-v2.css'. Cependant, dans votre scénario, l'URL de la demande ne change jamais, donc je pense que CloudFront continuera à servir l'ancienne version de l'objet jusqu'à ce que le cache expire. –

Répondre

2

Le réglage Origin Path est appliqué à la demande après le cache est cochée ... pas avant. Lorsque l'objet demandé dans l'URI n'est pas dans le cache, l'objet est demandé au serveur Origin. À ce stade, le chemin d'origine est ajouté au chemin de requête entrant, puis envoyé à l'origine. La mise en cache est basée sur le chemin de requête entrant. Le paramètre lui-même prend effet rapidement, souvent en quelques secondes, mais ne purge pas la mémoire cache. S'il s'agit uniquement de la version de la page racine, vous pouvez laisser vide le chemin d'origine, remplacer l'objet racine par défaut par le nouvel objet racine, puis invalider /. Ou, vous pouvez continuer à faire ce que vous faites, et invalider /* après avoir fait la modification. Les invalidations gratuites sont limitées à 1000 par mois, mais l'invalidation /* (ou tout caractère générique) ne compte que pour 1 invalidation, quel que soit le nombre d'objets correspondant au caractère générique.


¹ chemin de la requête entrante fait également référence au chemin tel qu'il est après un front Lambda @ Viewer demande déclencheur modifie, le cas échéant.