Je dois définir les en-têtes de contrôle-cache pour l'ensemble d'un bucket s3, à la fois pour les fichiers existants et futurs, et j'espérais le faire via une politique de bucket. Je sais que je peux modifier les existants et je sais comment les spécifier lors de l'envoi si je les télécharge moi-même, mais malheureusement l'application qui les télécharge ne peut pas définir les en-têtes car elle utilise s3fs pour copier les fichiers là-bas.
Réponses
Trop de publicités?Ajout à la réponse de @roens.
Si vous utilisez S3 avec Cloudfront, vous pouvez facilement utiliser non seulement Cloudfront, mais aussi la mise en cache du navigateur. Pour que cela fonctionne, il suffit de spécifier l'en-tête cache-control dans la réponse.
- Allez à Cloudfront
- Allez à votre distribution et modifiez le comportement
- Allez à la politique des en-têtes de réponse
- Définissez une politique personnalisée avec cache-control "max-age=604800" (7 jours) et orgin-override activé.
- Maintenant, vous devriez avoir un cache navigateur de 7 jours sur tous vos fichiers dans ce bucket S3.
Remarque: Dans S3, vous devriez spécifier cela pour chaque fichier, ce qui pourrait ne pas être adapté pour votre application. De plus, vous devriez définir une politique d'en-tête de réponse pour transmettre l'en-tête cache-control, si vous utilisez S3 avec Cloudfront.
- Réponses précédentes
- Plus de réponses
1 votes
Pour toute personne consultant cette question dans le contexte de définir
cache-control: max-age
sur une distribution CloudFront: voir cette réponse sur un autre fil de discussion; une autre solution, pour toute personne transmettant des ressources via un script de déploiement avecaws s3
: définissez une valeur via--cache-control max-age=
.