web-dev-qa-db-fra.com

Puis-je définir une variable "Expires" dans Amazon S3?

J'ai une tonne de fichiers dans Amazon S3 (servis via Cloudfront) pour lesquels j'ai ajouté un en-tête Expires de Mon, Jan 1 2024 11:11:11 GMT

Cependant, j'ai récemment appris que le fait de définir un en-tête Expires plus d'un an à l'avenir enfreint le HTTP 1.1 RFC .

S3 existe-t-il un moyen de définir une dynamique Expires qui est toujours un an à compter de la date de la demande?

7
DisgruntledGoat

S3 existe-t-il un moyen de définir une dynamique Expires qui est toujours un an à compter de la date de la demande?

Pas à ma connaissance, et je doute que l'équipe AWS envisage de prendre en charge cette assistance:

Vous savez probablement que l'on ne peut pas définir une valeur _ Expires: ... dynamique en tant que telle, car . La seule valeur valide dans un en-tête Expires est une date HTTP. toute autre chose sera probablement interprétée comme "dans le passé", de sorte que la représentation ne puisse pas être cachée. (voir par exemple Contrôle de la fraîcheur avec l'en-tête HTTP Expires dans celui de Mark Nottingham excellent Didacticiel de mise en cache ).

Cependant, cette faiblesse de l’en-tête HTTP 1.0 Expires: ... a été réalisée et corrigée dans HTTP 1.1, qui a introduit une nouvelle classe d’en-têtes, les en-têtes de réponse Cache-Control, pour donner aux éditeurs Web plus de contrôle sur leur contenu et sur les limitations d'Expirations. (voir En-têtes HTTP Cache-Control ).

Donc, concernant votre cas d'utilisation (et en général), je vous recommande fortement de recourir à un en-tête Cache-Control: max-age=... pendant un an et d'ajouter uniquement Expires: ... pour la compatibilité ascendante, s'il y a une raison spécifique. faire cela. Dans ce cas, cependant, selon votre question, vous devrez effectivement ajuster la valeur de temps en temps pour éviter de violer le RFC HTTP 1.1, par exemple. via un script ciblant le API S .

6
Steffen Opel