Для чого корисний TTL 0 у CloudFront?


80

Кілька тижнів тому Amazon оголосила, що знизила термін дії вмісту:

Amazon CloudFront знижує мінімальний термін дії вмісту

Настільки, що ви можете насправді встановити зараз TTL в CloudFront на 0. Тож моє питання полягає в тому, чому може бути корисним мати розподіл CloudFront із TTL, встановленим на 0. Для мене це означає відсутність кешування взагалі, тому кожен запит, який надходить до CloudFront в кінцевому підсумку вдариться до джерела.

Чого мені не вистачає?

Відповіді:


167

Ця нова функція Amazon CloudFront насправді надзвичайно корисна для багатьох випадків використання, оскільки натискання на джерело працює дещо інакше, ніж це виглядає на перший погляд, і не обов'язково є проблемою, навпаки; хоча ця функція вже була випущена раніше, все це поєднується з нещодавнім випуском Amazon CloudFront - Підтримка динамічного вмісту , наприклад для відповідного питання:

Змінна тривалість життя (TTL) - У багатьох випадках динамічний вміст або не можна кешувати, або кешувати дуже короткий проміжок часу, можливо, лише кілька секунд. Раніше мінімальний TTL CloudFront становив 60 хвилин, оскільки весь вміст вважався статичним. Нове мінімальне значення TTL становить 0 секунд. Якщо ви встановите TTL для певного джерела на 0, CloudFront все одно буде кешувати вміст із цього джерела. Потім він зробить запит GET із заголовком If-Modified-Since , тим самим даючи джерелу шанс сигналізувати, що CloudFront може продовжувати використовувати кешований вміст, якщо він не змінився в джерелі . [курсив мій]

Іншими словами, використання TTL 0 в першу чергу означає, що CloudFront делегує повноваження щодо управління кеш-пам’яттю початковій точці, тобто сервер джерела вирішує, чи ні, і якщо протягом якого часу CloudFront кешує об’єкти; будь ласка, зверніть увагу, що запит GET із заголовком If-Modified-Since не обов'язково означає, що сам об'єкт витягується з джерела, швидше походження може (і повинно) повернути код стану HTTP 304 - Не змінено, де це застосовно :

Вказує, що ресурс не змінювався з моменту останнього запиту. [...] Використання цього заощаджує пропускну здатність та повторну обробку як на сервері, так і на клієнті, оскільки лише дані заголовка повинні бути надіслані та отримані порівняно з цілою сторінкою, що повторно обробляється сервером, а потім надіслані знову з використанням більшої пропускної здатності сервера та клієнта. [курсив мій]

Детальніше про механіку та переваги управління кеш-пам’яттю HTTP - дійсно важливу та ефективну частину архітектури HTTP - див. У чудовому підручнику з кешування Марка Ноттінгема

Розуміння того, як усі ці частини працюють разом, насправді може бути трохи складним, відповідно таблиця в розділі Вказівка ​​мінімального часу, до якого CloudFront кешує об’єкти для розподілу завантажень у межах Вказівки, як довго об’єкти залишаються в кеш-пам’яті CloudFront (термін дії об’єкта), намагається узагальнити ефекти при застосуванні в контексті CloudFront із TTL або без нього конкретно.


3
Це фантастична відповідь. Зрозумів!
jatorre

3
Дякую Штеффен! Абсолютно ґрунтовна і добре написана відповідь. AWS має помістити це у своїх DOCS !!! ха!
Ашеррард,

2
Дуже добре пояснили. Серйозно. +10 за простоту та використовувані термінології.
Shivkumar Mallesappa

5

Зверніть увагу, що Amazon говорить не "TTL - 0", а "Мінімальний TTL - 0". і це дуже різне. Опис вище дуже бажаний, але немає жодних гарантій того, що Cloudfront насправді це робить.

На моєму досвіді зараз, я бачу, як кешоване зображення залишається на кілька хвилин у краю, хоча моє походження вже змінилося.

Отже, я думаю, що сказати "Мінімальний TTL дорівнює 0", швидше за все, схоже на "Amazon не має суворого наміру зберігати це в кеш-пам'яті", і, можливо, "і це буде часто перезавантажуватися".

Для таких програм, як CMS, де веб-користувач розміщує новий вміст, я вважаю, що TTL-0 все ще недостатній. Вам все одно доведеться або викликати недійсність із системи управління вмістом, або використовувати різні шляхи для різних номерів версій.


2

CloudFront можна використовувати в поєднанні з менеджером сертифікатів, щоб додати підтримку HTTPS до веб-сайтів S3. Вам може знадобитися це, але нульове кешування.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.