Для чего полезен TTL 0 в CloudFront?
несколько недель назад Amazon объявила, что они сократили срок действия содержание:
Amazon CloudFront Снижает Минимальный Срок Действия Контента
Так много, что теперь вы можете установить TTL в CloudFront на 0. Поэтому мой вопрос заключается в том, почему было бы полезно иметь дистрибутив CloudFront с TTL, установленным в 0. Для меня это означает отсутствие кэширования вообще, поэтому каждый запрос, который попадает в CloudFront, в конечном итоге попадает в источник.
Что я не хватает?
3 ответа:
эта новая функция Amazon CloudFront на самом деле очень полезно для многих случаях, потому что попадание в начало координат работает немного иначе, чем это выглядит на первый взгляд и не обязательно проблема, наоборот; в то время как эта функция была выпущена ранее уже, все это приходит вместе с недавним выпуском Amazon CloudFront-поддержка динамического контента, например, на вопрос:
переменное время жизни (TTL) - во многих случаях динамическое содержимое либо не может быть кэшируемым или кэшируемым в течение очень короткого периода времени, возможно всего несколько секунд. В прошлом минимальный TTL CloudFront составлял 60 минуты, так как все содержимое считалось статичным. Новое минимальное значение TTL значение 0 секунд. если вы установите TTL для определенного источника в 0, CloudFront по-прежнему будет кэшировать содержимое из этого происхождения. он будет сделайте запрос GET с заголовком If-Modified-Since, тем самым дав происхождение шанс сигнал о том, что CloudFront может продолжать использовать кэшированное содержимое, если оно не изменилось в начале. [выделено мной]
другими словами, использование TTL 0 в первую очередь означает, что CloudFront делегирует полномочия по управлению кэшем источнику, т. е. исходный сервер решает, следует ли и если да, то как долго CloudFront кэширует объекты; обратите внимание в частности, что получить запрос с заголовком If-Modified-Since не обязательно означает, что сам объект извлекается из источника, а источник может (и должен) возвращать код состояния HTTP 304 не изменен где это применимо:
указывает, что ресурс не был изменен с момента последнего запроса. [...] использование этого экономит пропускную способность и переработку как на сервере, так и клиент, так как только данные заголовка должны быть отправлено и получено in сравнение со всей страницей, которая повторно обрабатывается сервер, а затем снова отправляется с использованием большей пропускной способности сервера и клиента. [выделено мной]
смотрите Марк Ноттингем отлично Кэширование Учебник для получения подробной информации о механике и преимуществах управления кешем HTTP, действительно важной и эффективной части архитектуры HTTP.
понимание того, как все эти части работают вместе, может быть немного сложно действительно, соответственно таблица в разделе указание минимального времени, в течение которого CloudFront кэширует объекты для загрузки дистрибутивов внутри указание времени пребывания объектов в кэше CloudFront Edge (истечение срока действия объекта) пытается суммировать эффекты при применении в контексте CloudFront с TTL = 0 или без него.
обратите внимание, что Amazon не говорит "TTL равен 0", он говорит "минимальный TTL равен 0". а это совсем другое дело. Приведенное выше описание очень желательно, но нет никакой гарантии, что Cloudfront действительно это делает.
в моем опыте прямо сейчас я вижу, что кэшированное изображение остается на несколько минут в краю, в то время как мое происхождение уже изменилось.
Итак, я думаю, что "минимальный TTL равен 0", вероятно, больше похож на" Amazon не имеет строгого намерения хранить это в кэше", и может быть, "и это будет часто повторяться".
для таких приложений, как CMSs, где веб-пользователь публикует новый контент, я думаю, что TTL-0 все еще недостаточно. Вам все равно придется либо вызывать недействительность из CMS, либо использовать разные пути для разных номеров версий.