Cache-Control — HTTP-заголовок, управляющий кэшированием ресурсов в браузере и CDN. Для статики (JS/CSS/изображения с хешем) — public, max-age=31536000, immutable (1 год). Для HTML — public, max-age=60, stale-while-revalidate=86400. Для API — no-store. Правильная настройка ускоряет сайт на 30-80% при повторных визитах.
Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.
Бесплатный онлайн-инструмент — проверка HTTP-заголовков: результат мгновенно, без регистрации.
Cache-Control: public, max-age=31536000, immutableCache-Control: public, max-age=60, s-maxage=600Cache-Control: no-store (личные данные) или private, max-age=0, must-revalidate| Сценарий | Конфиг / запись |
|---|---|
| nginx: статика с хешем (1 год) | location ~* \.(js|css|png|jpg|woff2)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
} |
| nginx: HTML (короткий кэш) | location / {
add_header Cache-Control "public, max-age=60, s-maxage=600";
} |
| Apache: .htaccess статика | <FilesMatch "\.(js|css|png|jpg|woff2)$">
Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch> |
| API (no-cache) | Cache-Control: no-store, no-cache, must-revalidate |
| CDN-aware (CDN кэширует, браузер — нет) | Cache-Control: public, max-age=0, s-maxage=86400 |
Cache-Control: no-cache ≠ "не кэшировать". Это "всегда проверяй". Нужно no-storeДля настройки заголовков Cache-Control вам необходимо добавить соответствующие директивы в конфигурацию вашего веб-сервера. Для этого используйте следующие ключевые команды:
Header set Cache-Control "max-age=3600, public"add_header Cache-Control "max-age=3600, public";Эти настройки указывают браузерам кэшировать ресурс на 3600 секунд (1 час). Важно учитывать, что правильная настройка заголовков Cache-Control позволяет значительно улучшить производительность вашего сайта и снизить нагрузку на сервер.
Настройка заголовков Cache-Control может варьироваться в зависимости от типа контента. Например, для статических ресурсов, таких как изображения и CSS-файлы, можно установить длительное время кэширования, тогда как для динамического контента рекомендуется использовать более короткие интервалы.
Рассмотрим пример настройки заголовков Cache-Control для Nginx:
server {
listen 80;
server_name example.com;
location /images/ {
add_header Cache-Control "max-age=31536000, immutable";
}
location /css/ {
add_header Cache-Control "max-age=604800";
}
location /api/ {
add_header Cache-Control "no-store";
}
}В этом примере:
С помощью таких настроек вы можете оптимизировать использование кэша и улучшить время загрузки вашего сайта.
<code>max-age</code> — TTL для private кэшей (браузер). <code>s-maxage</code> — TTL для shared кэшей (CDN, proxy). Если указаны оба — каждый использует свой.
Директива в Cache-Control: "ресурс никогда не изменится". Браузер не отправляет revalidation (If-None-Match) даже при reload. Важно для hash-based assets.
Да. Cache-Control говорит "кэш валиден N секунд". ETag используется при expire для 304 Not Modified (условные запросы). Сочетаются.
<a href="/check">HTTP-чекер Enterno.io</a> → введите URL → раздел Cache покажет Cache-Control, ETag, Age, max-age.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.