Коротка відповідь
middleВідключення кешу браузера досягається через заголовки HTTP: `Cache-Control: no-store, no-cache, must-revalidate` і `Pragma: no-cache`. У відповіді сервера також можна додати `Expires: 0` або дату в минулому. При використанні fetch API у JavaScript можна додати `cache: 'no-store'` в options, щоб переконатися, що браузер не зберігає результат.
Повне пояснення
Що це і навіщо
- Кешування HTTP‑запитів зберігає відповіді у браузері, що пришвидшує повторні запити. У випадках, коли дані змінюються часто або містять конфіденційну інформацію, потрібно вимкнути кеш.
Ключові принципи/терміни
Cache-Control– заголовок, що керує кешуванням.no-store,no-cache,must-revalidate– директиви, що забороняють зберігання і вимушують перевірку.Pragma: no-cache– зворотна сумісність із HTTP/1.0.Expires: 0– встановлює дату закінчення терміну у минулому.
Як це працює
- Сервер надсилає відповідь з вказаними заголовками.
- Браузер читає їх і не зберігає відповідь у кеш, а також перевіряє сервер при кожному запиті.
Практика і реалізація
- У Node.js/Express:
app.get('/data', (req, res) => {
res.set('Cache-Control', 'no-store, no-cache, must-revalidate');
res.set('Pragma', 'no-cache');
res.set('Expires', '0');
res.json({msg: 'Fresh data'});
});
- У fetch API:
fetch('/data', { cache: 'no-store' })
.then(r => r.json())
.then(console.log);
Тестування
- Використовуючи Chrome DevTools → Network, можна перевірити, що у відповіді немає
Cache-Control‑заголовків. - У Jest можна мокати fetch і перевірити, що опція
cacheвстановлена.
Безпека та приватність
- Забороняючи кеш, зменшується ризик витоку конфіденційних даних через локальний кеш.
- Однак це збільшує навантаження на сервер, тому слід балансувати між продуктивністю і безпекою.
Оптимізація
- Якщо потрібна часткова кешування, використовуйте
Cache-Control: max-age=0або ETag. - Для статичних ресурсів залишайте кешування, а динамічні запити – без.
Часті помилки
- Забувають додати
Pragmaдля HTTP/1.0. - Неправильно використовують
no-cache(замістьno-store). - Не оновлюють заголовки при зміні коду.
Cheatsheet
no-store– повне заборонення кешу.no-cache– дозволяє кешувати, але обов’язково перевіряти.must-revalidate– примушує браузер перевіряти після закінчення терміну.Expires: 0– швидка сумісність.