Я знаю, что мы можем установить заголовок expires для Amazon S3, но как мне установить его для файла облачного интерфейса? Я читал, что мы можем установить TTL от 24 часов до 1 часа, но я хочу установить его на 1 год.
Это обрабатывается с помощью обычных механизмов управления кешем HTTP (см. RFC 2616) как описано в Срок действия объекта Amazon CloudFront, в частности:
По умолчанию срок действия каждого объекта автоматически истекает через 24 часа. Чтобы указать другое время истечения срока действия, настройте источник для добавления значения либо для директивы Cache-Control max-age, либо для поля заголовка Expires для каждого объекта:
В
Cache-Control max-age
Директива позволяет указать, как долго (в секундах) вы хотите, чтобы объект оставался в кеше, прежде чем CloudFront снова получит объект с исходного сервера. Минимальный срок действия, поддерживаемый CloudFront, составляет 0 секунд для веб-рассылок и 3600 секунд для рассылок RTMP. Максимальное значение - 2038 год. Укажите значение в следующем формате:
Cache-Control: max-age=seconds
Например, следующая директива указывает CloudFront хранить связанный объект в кеше в течение 3600 секунд (один час):
Cache-Control: max-age=3600
Если вы хотите, чтобы объекты оставались в пограничных кэшах CloudFront в течение времени, отличного от времени, в течение которого они остаются в кешах браузера, вы можете использовать
Cache-Control max-age
иCache-Control s-maxage
директивы вместе. Для получения дополнительной информации см. Указание минимального времени, в течение которого CloudFront кэширует объекты для веб-рассылок.В
Expires
поле заголовка позволяет указать дату и время истечения срока, используя формат, указанный в RFC 2616, протокол передачи гипертекста - HTTP / 1.1, раздел 3.3.1, полная дата, например:
Sat, 30 Jun 2012 23:59:59 GMT
[...]
Мы рекомендуем использовать директиву max-age Cache-Control вместо поля заголовка Expires для управления кешированием объекта.. Если вы укажете значения и для Cache-Control max-age, и для Expires, CloudFront будет использовать только значение max-age. [курсив мой]
Вы также можете взглянуть на таблицу внутри Указание минимального времени, в течение которого CloudFront кэширует объекты для веб-дистрибутивов понять особенности Минимальный TTL = 0 (по умолчанию) (см. мой ответ на Чем полезен TTL 0 в CloudFront? для более подробного объяснения этой функции).
Почему ты хочешь это сделать? Как вы думаете, в этом случае ваши файлы будут храниться ближе к краю в течение целого года без единого извлечения источника? Если так, то этого просто не произойдет, извините, 24 часа на самом деле довольно много для CDN. Если вы беспокоитесь о том, что ваши файлы упадут за край, просто распространите несколько виртуальных машин по всему миру, которые периодически получают ваш контент (мы называем это «щекоткой»), сохраняя ваш контент на грани.