Ответ
Браузер по умолчанию пытается кешировать любые статические ресурсы, полученные по HTTP/HTTPS, если сервер явно не запретил это. Как backend-разработчик на Node.js, я управляю этим поведением через HTTP-заголовки.
Что кешируется:
- Статические файлы: Изображения (
.jpg,.png), стили (.css), скрипты (.js), шрифты (.woff2), иконки. - Ответы на GET-запросы, если в них есть соответствующие заголовки.
Ключевые заголовки для управления кешем с Node.js:
Cache-Control— основной заголовок. Например,max-age=3600говорит браузеру хранить ресурс 1 час.ETag/Last-Modified— используются для условных запросов (If-None-Match, If-Modified-Since). Браузер отправляет такой запрос, и сервер может ответить304 Not Modified, экономя трафик.
Пример настройки в Express.js:
const express = require('express');
const app = express();
// Статика с долгим кешированием
app.use('/static', express.static('public', {
maxAge: '30d', // Кешировать 30 дней
etag: true // Включить ETag
}));
// Динамический API-роут без кеширования
app.get('/api/data', (req, res) => {
res.set('Cache-Control', 'no-store, no-cache, must-revalidate');
res.json({ data: 'live' });
});
Без явных указаний браузер использует эвристики, но для предсказуемости кеширование всегда нужно настраивать на стороне сервера.