Кэширование CloudFront - Как обеспечить обновление CF с исходного сервера S3 после истечения срока действия? - PullRequest
5 голосов
/ 07 апреля 2009

Я помещаю активы в S3 с заголовками истечения, которые успешно передаются в дистрибутивы CloudFront. Однако запросы после истечения срока действия не приводят к тому, что CloudFront запрашивает новый файл с исходного сервера.

Я также обнаружил, что токены версии строки запроса не требуют нового актива, и я не хочу использовать полное управление версиями имени файла.

Все это может быть связано с моим плохим знанием заголовков управления кэшем, но я начинаю задумываться, упускаю ли я что-то критическое о том, как CloudFront должен работать. В ответах CloudFront показаны заголовки, подобные следующим.

Cache-Control: max-age=120
Expires: Tue, 07 Apr 2009 12:13:26 GMT

Ответы [ 3 ]

9 голосов
/ 27 июня 2010

Время проходит и все меняется. Как отметил Тим, самое низкое время кеширования составило 24 часа, но в апреле 2010 года Amazon объявила, что будет распознавать и выполнять указания по кешированию до часа.

Объявление здесь: http://developer.amazonwebservices.com/connect/ann.jspa?annID=655

4 голосов
/ 07 апреля 2009

Похоже, Amazon игнорирует время истечения менее 24 часов. http://developer.amazonwebservices.com/connect/thread.jspa?messageID=107699&#107699

0 голосов
/ 07 октября 2013

Как отмечается в комментариях Matchu, теперь вы можете установить время истечения до нуля, если хотите, что очень удобно для разработчиков и тестирования серверов!

http://aws.amazon.com/about-aws/whats-new/2012/03/19/amazon-cloudfront-lowers-minimum-expiration-period/

Минимальное значение TTL может составлять всего 0 секунд. Затем вы можете установить TTL для каждого файла, установив заголовок элемента управления кэшем для вашего файла в источнике.

Также обратите внимание на то, что говорят амазонские документы :

После того, как дата и время истечения срока в заголовке Expires пройдут, CloudFront снова получает объект с исходного сервера каждый раз, когда местоположение ребра получает запрос на объект.

Мы рекомендуем использовать директиву max-age Cache-Control вместо поля заголовка Expires для управления кэшированием объектов. Если вы укажете значения как для max-age Cache-Control, так и для Expires, CloudFront будет использовать только значение max-age.

...