Сроки кэширования браузера (browser caching) определяются HTTP-заголовками Cache-Control и Expires. Они задают, как долго статические файлы будут храниться в браузере посетителя. На практике для CSS, JavaScript, изображений, шрифтов и иконок прописывают правила Cache-Control, а в некоторых случаях и Expires. Например, для версионированных CSS и JS часто ставят 1 год, для картинок — от 30 дней до года, а HTML-страницы обычно кэшируют на короткий срок или с проверкой актуальности. Правильная настройка избавляет от повторных загрузок одних и тех же файлов, ускоряет открытие страниц и улучшает показатели Core Web Vitals.
В этом руководстве мы разберём, как работает кэширование браузера, какие сроки лучше выбрать для разных типов файлов, а также покажем настройку на Apache, Nginx, LiteSpeed, WordPress и CDN. Главная цель — не просто получить зелёный балл в тесте скорости, а обеспечить пользователям актуальный контент, снизить нагрузку на сервер, уменьшить TTFB и расход трафика. Особенно заметен эффект на shared-хостинге, WordPress-хостинге и корпоративных проектах. Пакеты веб-хостинга Hostragons
Что такое кэширование браузера?
Кэширование браузера — это временное сохранение статических ресурсов (логотипов, CSS, JavaScript, шрифтов и изображений) на устройстве пользователя. Когда посетитель открывает главную страницу, все эти файлы загружаются. При наличии правильных заголовков кэша при переходе на вторую страницу или повторном визите браузер не запрашивает их заново с сервера. В итоге сайт открывается быстрее.
Представьте главную страницу размером 2 МБ: 1,4 МБ — изображения, 300 КБ — CSS и JS, 100 КБ — шрифты. При первом визите всё это скачивается. При втором визите браузер берёт файлы из локального кэша, и объём передаваемых данных резко падает. На мобильном интернете и высоконагруженных сайтах разница особенно заметна.
Не путайте кэширование браузера с серверным кэшем. Серверный кэш хранит PHP-вывод или результаты запросов на сервере, а браузерный — позволяет повторно использовать ресурсы на устройстве посетителя. Для максимальной скорости нужно настраивать оба уровня. В WordPress обычно сочетают кэш страниц, объектный кэш, CDN и browser cache. WordPress хостинг и оптимизация производительности
Почему кэширование браузера важно для SEO?
Google выше оценивает сайты, которые дают быстрый и стабильный опыт. Само по себе кэширование браузера не гарантирует рост позиций, но напрямую влияет на скорость загрузки, задержку взаимодействия и эффективность загрузки ресурсов. Особенно заметен эффект при повторных визитах, просмотре категорий, переходах между товарами и навигации по блогу.
В 2026 году техническая производительность оценивается не только по Lighthouse. Google учитывает реальный пользовательский опыт: LCP, INP, CLS, TTFB и данные Chrome User Experience Report. Повторная загрузка CSS и JS увеличивает LCP. Шрифты без кэша ухудшают визуальную стабильность. Большие изображения без кэша создают ощущение тормозов на мобильных устройствах.
- Быстрые повторные визиты: пользователь не скачивает те же файлы заново.
- Меньше расход трафика: снижается нагрузка на сервер и хостинг-ресурсы.
- Эффективное сканирование: боты и пользователи получают статические файлы быстрее и стабильнее.
- Ниже показатель отказов: быстрые страницы удерживают внимание.
- Стабильная производительность: нагрузка на CDN и хостинг выравнивается.
Основные HTTP-заголовки кэширования
Продолжительность кэширования браузера управляется заголовками HTTP-ответа. Самые распространённые — Cache-Control, Expires, ETag и Last-Modified. В современных проектах главный инструмент — Cache-Control; Expires используют в основном для обратной совместимости.
Cache-Control
Заголовок Cache-Control сообщает браузеру и промежуточным кэшам, как хранить ресурс. Самые частые директивы:
- max-age: сколько секунд ресурс считается свежим (max-age=31536000 ≈ 1 год).
- public: ресурс можно кэшировать в браузере и CDN.
- private: ресурс кэшируется только в браузере пользователя.
- no-cache: перед использованием нужно проверить актуальность на сервере.
- no-store: ресурс нельзя сохранять нигде (платёжные и личные страницы).
- immutable: ресурс не изменится до истечения срока (идеально для версионированных файлов).
Пример заголовка для статического файла: Cache-Control: public, max-age=31536000, immutable. Браузер поймёт, что файл можно хранить год и не нужно проверять его при неизменном имени.
Expires
Заголовок Expires указывает точную дату и время, до которого ресурс считается действительным. Например, для изображения можно задать срок 30 дней. Однако Expires использует абсолютную дату и менее гибкий, чем Cache-Control. В современных настройках приоритет отдаётся Cache-Control, а Expires добавляют для старых браузеров.
ETag и Last-Modified
ETag и Last-Modified — механизмы валидации. Браузер спрашивает сервер, не изменился ли файл. Если изменений нет, сервер отвечает 304 Not Modified, и тело файла не передаётся повторно. Такой подход удобен для HTML и файлов, которые часто обновляются.
Какие сроки кэширования выбрать для разных типов файлов?
Самая частая ошибка — давать всем файлам одинаковый срок. HTML, CSS, JS, изображения, шрифты и API-ответы обновляются с разной частотой. Основное правило: если имя файла можно менять — даём длинный кэш; если содержимое меняется часто без смены имени — используем короткий срок или валидацию.
| Тип ресурса | Рекомендуемый срок | Рекомендуемый заголовок | Примечание |
|---|---|---|---|
| HTML-страницы | 0–10 минут или валидация | no-cache, max-age=0 | При частых изменениях важна актуальность. |
| CSS и JS | 30 дней — 1 год | public, max-age=31536000, immutable | Имя файла должно быть версионированным: style.v3.css. |
| Изображения | 30 дней — 1 год | public, max-age=2592000 или 31536000 | Логотипы и иконки — длинный срок; промо-баннеры — короче. |
| Шрифты | 6 месяцев — 1 год | public, max-age=31536000, immutable | WOFF2 редко меняются. |
| PDF и медиа | 7 дней — 6 месяцев | public, max-age=604800 или 15552000 | Для обновляемых каталогов срок подбирают аккуратно. |
| Админ и платёжные страницы | Без кэша | no-store, private | Безопасность и персональные данные в приоритете. |
Эта таблица — отправная точка. В интернет-магазине HTML-страницы с ценами и наличием агрессивно кэшировать нельзя. А вот изображения товаров при смене имени файла можно кэшировать на год. На корпоративном сайте логотип, шрифты и тему можно хранить долго, а промо-баннеры — 7–30 дней.
Как спланировать кэширование браузера?
Для успешной стратегии сначала разделите файлы по типам. Технически нужно писать правила по расширениям, а стратегически — учитывать частоту обновлений.
1. Разделите статические и динамические ресурсы
CSS, JS, JPG, PNG, WebP, SVG, WOFF2 — статические. HTML, корзина, личный кабинет, поиск и API-ответы — динамические. Статические файлы кэшируют надолго, динамический контент требует осторожности. Персонализированный контент никогда не кэшируют с директивой public.
2. Используйте версионирование файлов
Длинный срок кэша безопасен только при версионировании. Если вы закэшируете style.css на год и потом измените его, часть пользователей продолжит видеть старую версию. Вместо этого используйте style.2026.01.css, app.v12.js или хеш в имени — app.8f3a2.js. При обновлении публикуется новое имя и браузер запрашивает свежий файл.
В WordPress версионирование можно включить через параметр version в wp_enqueue_style и wp_enqueue_script. Ещё надёжнее — добавлять хеш в имя файла при сборке.
3. Не кэшируйте HTML агрессивно
HTML несёт видимый контент, поэтому обычно используют короткий срок или revalidation. Для статей блога хватает 5–10 минут, для новостей и цен — ещё меньше. При использовании плагинов кэша страниц в WordPress заголовки браузерного кэша нужно согласовывать с очисткой кэша и CDN.
4. Отключайте кэш на страницах с персональными данными
На страницах входа, личного кабинета, оплаты, счетов и персональных данных используйте Cache-Control: no-store, private. Кэширование браузера — для скорости, но не должно ставить под угрозу безопасность. SSL здесь обязателен. SSL сертификаты Hostragons
Настройка кэширования браузера в Apache через .htaccess
На Apache правила обычно прописывают в .htaccess. На shared-хостинге это самый удобный способ. Нужно, чтобы были включены модули mod_expires и mod_headers — на качественном хостинге они уже активны.
Логика простая: изображения и шрифты — длинный срок, CSS и JS — длинный срок, HTML — короткий или с проверкой. В .htaccess используют ExpiresByType и Header set Cache-Control. Например, для image/webp, image/jpeg, image/png, image/svg+xml — 1 год; для text/css и application/javascript — 1 год; для text/html — no-cache.
Перед правкой обязательно сделайте бэкап .htaccess. Ошибка в правиле может вызвать 500 Internal Server Error. После изменений проверьте заголовки в DevTools → Network. Если Cache-Control не появляется, возможно, модуль отключён, CDN перезаписывает заголовки или конфликтует плагин.
Примерные значения: CSS и JS — max-age=31536000, изображения — max-age=31536000, PDF — max-age=2592000, HTML — max-age=0 + no-cache. Эти значения можно брать за основу и корректировать под частоту обновлений вашего сайта. Настройки производительности Apache .htaccess
Настройка Browser Caching в Nginx
В Nginx заголовки задают в блоках server или location. Nginx хорошо справляется со статическими файлами, поэтому его часто выбирают для высоконагруженных проектов. Основной подход — location по расширениям и директива expires вместе с add_header Cache-Control.
Пример: для CSS, JS, WebP, JPG, PNG, SVG, WOFF2 ставят expires 1y и Cache-Control: public, immutable. Для HTML — expires off или no-cache. Если используете CDN, проверьте, как origin-заголовки интерпретируются на edge-серверах.
Важный момент: директива add_header в некоторых случаях применяется только к определённым кодам ответа. В современных версиях Nginx можно добавить always. Если один и тот же заголовок добавляют и приложение, и Nginx, и CDN, возникают дубли и конфликты — нужно чётко определить, кто главный.
LiteSpeed и кэширование на WordPress

LiteSpeed в связке с плагином LiteSpeed Cache даёт мощный прирост производительности. Однако browser cache и page cache — разные вещи. При включённой опции Browser Cache в LiteSpeed Cache заголовки для статических файлов применяются автоматически, но сроки всё равно стоит проверить.
В WordPress рекомендуется кэшировать статические файлы надолго и обязательно использовать версионирование. После обновления темы или правки CSS/JS плагин должен очищать кэш, а при наличии CDN — выполнять purge. Иначе пользователи могут увидеть старый дизайн или сломанный JavaScript.
Популярные плагины кэша предлагают Browser Cache, Minify, Combine, Critical CSS, CDN и Object Cache. Включать всё одновременно на максимуме не всегда правильно. Сначала настройте заголовки браузерного кэша, потом тестируйте минификацию. В 2026 году с HTTP/2 и HTTP/3 комбинирование файлов уже не так критично и иногда даже снижает эффективность кэша.
Если WordPress-сайт тормозит, проблема может быть не только в browser cache. Влияют раздутая база данных, тяжёлая тема, лишние плагины, неоптимизированные изображения и слабый хостинг. Поэтому кэширование нужно рассматривать вместе с качественным хостингом, актуальной версией PHP и правильной настройкой SSL. WordPress хостинг Hostragons
Как настроить сроки кэширования при использовании CDN?
CDN раздаёт статические файлы с ближайших edge-серверов. Browser cache хранит файлы уже в браузере пользователя. При совместной работе двух уровней прирост скорости ощутимее. Важно, чтобы TTL на CDN и заголовки Cache-Control на origin были согласованы.
Рекомендация: на origin давайте статическим файлам 1 год, а в CDN настройте аналогичный или чуть меньший TTL. При изменениях либо меняйте имя файла, либо делайте purge. HTML-страницы, корзину, личный кабинет и оплату из кэша CDN исключайте полностью.
Частая проблема — после обновления сайта пользователи видят старую версию. Обычно это происходит, когда имя файла не меняется или не выполнен purge. Самый надёжный способ — генерировать файлы с хешем в имени и обновлять ссылки в HTML.
Пошаговый чек-лист внедрения
Ниже — практический план внедрения кэширования браузера. На небольшом корпоративном сайте всё можно сделать за 30–60 минут; на интернет-магазине или сложном проекте тестирование займёт больше времени.
- 1. Составьте инвентарь файлов: разделите CSS, JS, изображения, шрифты, PDF, HTML и API-ответы.
- 2. Определите частоту обновлений: какие файлы меняются ежедневно, а какие — раз в месяц.
- 3. Выберите стратегию версионирования: хеш в имени, параметр версии или номер сборки.
- 4. Добавьте правила на сервере: в Apache, Nginx, LiteSpeed или панели CDN пропишите Cache-Control.
- 5. Исключите безопасные страницы: админка, оплата, корзина, личный кабинет — no-store.
- 6. Протестируйте: Chrome DevTools, curl -I, WebPageTest, Lighthouse, реальные устройства.
- 7. Следите после публикации: проверяйте, нет ли старых файлов, сломанного дизайна или ошибок JS.
Как проверить работу кэширования браузера?
Самый быстрый способ — инструменты разработчика в браузере. Откройте страницу в Chrome, перейдите в DevTools → Network, кликните на CSS- или графический файл и посмотрите Response Headers. При повторной загрузке в столбце Status появится memory cache или disk cache.
Из командной строки используйте curl -I site.ru/file.css. Проверьте заголовки Cache-Control, Expires, ETag и Last-Modified. Если нужных заголовков нет — настройку переопределяет приложение, веб-сервер или CDN.
Для оценки производительности подойдут Lighthouse, PageSpeed Insights и WebPageTest. Но не стоит слепо выполнять все рекомендации инструментов. Например, Lighthouse советует длинный кэш для статики, но не для HTML. Также учитывайте, что кэширование сторонних скриптов (Google Fonts, рекламные сети) вы не контролируете.
Частые ошибки
Кэширование браузера кажется простым, но при неправильной настройке возникают проблемы с обновлениями, безопасностью и опытом пользователей. Вот самые распространённые ошибки:
- Давать 1 год кэша всем ресурсам: HTML, API и персональные данные сюда не входят.
- Длинный кэш без версионирования: пользователи продолжают видеть старый CSS/JS.
- Забывать про CDN purge: после обновления origin CDN может отдавать старую версию.
- Накладывать несколько плагинов кэша: заголовки дублируются и конфликтуют.
- Неправильно трактовать предупреждения о сторонних скриптах: их кэширование вы не контролируете.
- Кэшировать платёжные и личные страницы: здесь обязателен no-store.
Рекомендуемые начальные значения
Для нового сайта безопасные стартовые значения: версионированные CSS и JS — 1 год; изображения — 1 год, промо-баннеры — 30 дней; шрифты — 1 год; PDF — от 7 до 180 дней в зависимости от обновлений; HTML — no-cache или несколько минут. Такой подход сохраняет баланс между скоростью и актуальностью.
На корпоративном сайте длинные сроки обычно работают без проблем. В интернет-магазине статические файлы можно кэшировать надолго, а цены, наличие, корзину и личные данные — исключить. На новостном или блоговом сайте изображения и тему можно хранить долго, а HTML — кэшировать на короткий срок в зависимости от частоты публикаций. Проверка домена Hostragons Решения для корпоративного хостинга Hostragons
Заключение
Правильно настроенные сроки кэширования браузера заметно повышают скорость повторных визитов. Основное правило: версионированным статическим файлам — длинный срок, HTML и страницам с персональными данными — короткий срок или no-store. На Apache, Nginx, LiteSpeed, WordPress и CDN логика одинакова: определите тип ресурса, частоту обновлений, пропишите Cache-Control и тестируйте после внедрения.
Кэширование браузера — недорогой, но очень эффективный способ ускорения. Если ваш сайт размещён на инфраструктуре Hostragons, выберите подходящие настройки кэша под тип хостинга, чтобы улучшить и пользовательский опыт, и технические показатели SEO. Ознакомьтесь с тарифами Hostragons или проверьте текущую конфигурацию кэша на вашем проекте. Пакеты хостинга Hostragons
Часто задаваемые вопросы
Какой срок кэширования браузера выбрать?
Для версионированных CSS, JS, изображений и шрифтов оптимально 30 дней — 1 год. Для HTML-страниц из-за важности актуальности лучше no-cache, max-age=0 или несколько минут.
В чём разница между Cache-Control и Expires?
Cache-Control — современный и гибкий заголовок, работающий в секундах через max-age. Expires задаёт конкретную дату и время. В новых проектах приоритет у Cache-Control, Expires добавляют для совместимости со старыми браузерами.
Как включить browser caching в WordPress?
В плагинах LiteSpeed Cache, WP Rocket, W3 Total Cache есть опция Browser Cache. Также можно прописать правила по типам файлов напрямую в .htaccess или конфигурации сервера.
При длинном кэше обновления сайта не будут видны?
Если вы обновите CSS или JS без смены имени файла, часть пользователей увидит старую версию. Чтобы этого избежать, используйте версионирование, хеши в именах файлов и purge CDN.
Нужно ли кэшировать страницы оплаты и личного кабинета?
Нет. На страницах оплаты, корзины, счетов и админки используйте Cache-Control: no-store, private. Безопасность важнее скорости.