Всім доброго ранку, 🤗☀️☀️
сьогодні без історій, ранок як ранок у відпустці, вирішив вам зробити короткий розбір пула)))
Чому не (A) і шо таке взагалі таке Cache-Control: no-store
Це як сказати браузеру
Я тобі не довіряю. Нічого не зберігай. Навіть не думай.
Я часто бачив це на логін-сторінках або в API, де йдеться про персональні дані. Ніякого кешування. Взагалі. Ні в браузері, ні на проксі. Запит відповідь забув.
Чому ні це (С) Cache-Control: private, max-age=86400
Цей заголовок для персонального кешу. Це Типу Браузер, тримай цей ресурс у себе, але нікому не показуй. Тільки для цього користувача. І тримай його 24 години.
І тут уже ніяких перевірок серверу немає, поки не пройде час. Просто кешується, і все. Я таке часто бачу у відповідях, де є щось типу профілю користувача або його налаштувань.
Ну і чому ні (D) хоча я розумію чому це вас манило , ну і що таке все ж це Cache-Control: public, max-age=0, must-revalidate
Це вже серйозний режим. Тут кажуть Кешуй хоч на проксі, хоч у браузері, але перевір перед використанням. І якщо не вдасться перевірити, не використовуй!
Схоже на no-cache, але більш суворе. Тут кеш не просто повинен перевірятись, він не має права юзатись без підтвердження.
Це корисно для всяких CDN, коли треба мати абсолютну впевненість, що дані не застаріли навіть на проксі.
Ну і правильна відповідь (B)
Cache-Control: no-cache
Ооо, а ось це улюблений обманщик QA-шників.
На перший погляд, звучить як «не кешуй». Але насправді він каже
Можеш зберігати відповідь у кеші, але перед кожним використанням перевір на сервері, чи вона актуальна.
Це як коли зберіг копію документа, але перед тим, як його комусь дати телефонуєш автору,
Слухай, а нічого не змінилось?
З таким заголовком дані зберігаються, але використовуються тільки після підтвердження, наприклад, через ETag.
Саме тому це і є правильна відповідь на питання , змушує перевіряти, але не забороняє кешування.
Як висновок від мене, є
no-store, забороняє кешування взагалі
no-cache, дозволяє кешування, але змушує перевірити на сервері (наша відповідь)
private, max-age=86400 , кешує надовго, для одного користувача, без перевірки
public, max-age=0, must-revalidate, кешувати можна, але без перевірки, не юзай
Мораль
Якщо бачиш no-cache не ведись на назву. Це не “не кешуй”, це “кешуй, але перевіряй!”
Всім гарного робочого дня і продуктивного 🤗🤗🌞
Post #312
589
Bug or Defect? Завдання дня для QA Питання: Який заголовок змушує клієнта перевіряти актуальність кешу, але не забороняє кешування?
- ❤ 20
- ❤🔥 4
- 👍 3
- 🔥 3
- ⚡ 1