Проверяет понимание механизмов клиентского кэширования и их взаимодействия с сервером через HTTP-заголовки и стратегии валидации.
Клиентское кэширование — это механизм, при котором браузер (или другое клиентское приложение) сохраняет ответы сервера локально и переиспользует их при повторных запросах. Это снижает нагрузку на сервер, уменьшает задержки и экономит трафик. Управление кэшем происходит через HTTP-заголовки, которые сервер отправляет вместе с ответом.
Когда браузер получает ответ с Cache-Control: max-age=3600, он сохраняет его на час. В течение этого времени повторные запросы к тому же URL обслуживаются из кэша без обращения к серверу. Когда срок истекает, браузер отправляет условный запрос с заголовком If-None-Match (значение ETag) или If-Modified-Since. Сервер сравнивает и, если ресурс не изменился, отвечает 304 Not Modified без тела — браузер берёт данные из кэша.
const express = require('express');
const crypto = require('crypto');
const app = express();
app.get('/data', (req, res) => {
const body = JSON.stringify({ value: 42 });
const etag = crypto.createHash('md5').update(body).digest('hex');
if (req.headers['if-none-match'] === etag) {
return res.status(304).end(); // данные не изменились
}
res.set('Cache-Control', 'public, max-age=60');
res.set('ETag', etag);
res.send(body);
});
app.listen(3000);Итог: клиентское кэширование стоит применять для статики, редко меняющихся данных и публичных API, чтобы ускорить загрузку и снизить нагрузку на бэкенд, но для чувствительных данных всегда используйте no-store.