К содержанию

Wiki · Техническая оптимизация

Кэш

Кэш (кеш, cache) – это временное хранилище копий данных, из которого их можно отдать быстрее, чем получать заново. У сайта это копии страниц, картинок, скриптов и ответов базы данных, которые лежат в браузере посетителя, на сервере или в CDN.

Без кэша сервер на каждый просмотр собирает страницу с нуля: выполняет код CMS, делает запросы к базе, склеивает шаблон. Браузер каждый раз заново скачивает стили, шрифты и логотип. С кэшем готовая копия уже лежит под рукой, и страница открывается быстрее. Обратная сторона тоже знакома всем: поменяли цену на сайте, а клиент всё ещё видит старую.

Браузер, CDN, сервер, поисковик: где лежат копии

УровеньЧто хранитЧем управляется
БраузерСтили, скрипты, картинки, шрифтыЗаголовки Cache-Control, Expires, ETag
CDN или проксиКопии файлов и страниц ближе к посетителюНастройки CDN и заголовки сервера
СерверГотовые HTML-страницы, ответы базы, скомпилированный кодCMS, Redis, Memcached, OPcache
ПоисковикСохранённая копия страницыМета-тег robots со значением noarchive
Схема уровней кэша сайта: браузер, CDN, серверный кэш и сборка страницы заново, если готовой копии нет
Где запрос может найти готовую копию

Запрос посетителя проходит эти уровни по очереди. Нашлась свежая копия в браузере, и сервер вообще не получит запрос. Не нашлась, и следующим проверяется CDN, потом серверный кэш, и только в конце страница собирается заново.

Что именно ускоряет кэш: повторные визиты и первый байт

Кэш браузера ускоряет повторные визиты и переходы между страницами: общие файлы не скачиваются второй раз. Серверный кэш сокращает время до первого байта, потому что серверу не нужно ждать базу и код CMS. Оба влияют на скорость сайта и метрики Core Web Vitals.

В 1С-Битрикс есть кеширование компонентов и технология «Композитный сайт», которая отдаёт статическую часть страницы сразу, а динамические блоки вроде корзины подгружает отдельно. Похожие механизмы есть у WordPress и других CMS в виде плагинов и модулей.

Cache-Control для статики и HTML: max-age, no-cache, no-store

Браузер решает, сколько хранить файл, по заголовкам ответа сервера. Типичная схема такая:

# Стили, скрипты, картинки с версией в имени файла
Cache-Control: public, max-age=31536000, immutable

# HTML-страницы
Cache-Control: no-cache

Здесь часто путаются. Значение no-cache не запрещает кэш: браузер хранит копию, но перед показом спрашивает сервер, не изменилась ли она. Полный запрет задаёт no-store, его ставят на страницы с личными данными. Чтобы долгий кэш статики не мешал обновлениям, в имя файла добавляют версию: style.css?v=12 или style.a1b2c3.css. Поменяли стили, поменялась версия, и браузер скачает новый файл.

Сравнение заголовков Cache-Control no-store и no-cache: полный запрет кэша против хранения копии с проверкой у сервера
no-cache и no-store: в чём разница

Last-Modified, ответ 304 и сохранённая копия: кэш для поисковиков

Роботы тоже умеют экономить. Сервер передаёт дату изменения страницы (Last-Modified) или её отпечаток (ETag). При следующем обходе робот спрашивает, менялась ли страница, и если нет, сервер отвечает кодом 304 Not Modified без тела. Робот не тратит время на скачивание и быстрее доходит до новых страниц.

Отдельно стоит сохранённая копия в поисковике. Яндекс показывает ссылку на неё в выдаче, а запретить её можно мета-тегом robots со значением noarchive. В справке Google по операторам поиска на момент написания оператора cache: уже нет.

Старая цена, чужой кабинет, застрявшая ошибка: когда кэш вредит

  • Изменили цену или акцию, а часть посетителей видит старую версию страницы.
  • Обновили стили без смены версии файла, и вёрстка у постоянных посетителей «поехала».
  • Браузеры запомнили ошибочный 301 редирект. Его кэшируют надолго, и отменить ошибку у тех, кто уже перешёл, сложно.
  • Серверный кэш сохранил страницу авторизованного пользователя и показывает её другим.
  • В кэш попала страница с ошибкой сервера и отдаётся, когда сайт уже работает.

Как сбросить кэш после правок и не перегрузить сервер

Сбрасывать кэш нужно после изменений, которые посетитель должен увидеть сразу: цены, акции, контакты, вёрстка. Порядок обычно такой: очистить кэш в CMS, затем кэш CDN, если он есть, и проверить страницу в окне инкогнито. Браузерный кэш посетителей вы не очистите, поэтому для стилей и скриптов и нужна версия в имени файла.

Условный пример. Магазин сменил логотип и цвета кнопок, а новый файл стилей залил под старым именем style.css со сроком хранения в год. Новые посетители видят новый дизайн, постоянные ещё долго видят смесь старого и нового. Решение: добавить к файлу версию, и браузеры скачают его заново.

Полный сброс на большом сайте даёт всплеск нагрузки: все страницы собираются заново. Поэтому на нагруженных проектах чистят точечно, только изменённые разделы, и не в часы пик.

Как проверить кэширование в браузере и PageSpeed Insights

  1. Откройте инструменты разработчика в браузере, вкладку Network, и обновите страницу. У файлов из кэша в колонке размера будет пометка disk cache или memory cache.
  2. Посмотрите заголовки ответа: Cache-Control, Expires, ETag, Last-Modified. CDN обычно добавляет свой заголовок о попадании в кэш.
  3. Прогоните страницу через PageSpeed Insights: он отмечает статические файлы с коротким сроком хранения.
  4. Чтобы увидеть сайт без кэша браузера, обновите страницу с очисткой кэша или откройте её в режиме инкогнито.
Чек-лист проверки кэширования сайта: кэш статики, max-age, версии файлов, no-store для личных страниц, Last-Modified и ETag
Как проверить кэширование сайта

Очистка кэша, старые цены и сроки хранения файлов

Как очистить кэш браузера на компьютере?

В Chrome, Яндекс Браузере, Firefox и Edge на Windows нажмите Ctrl+Shift+Delete, откроется окно очистки истории. Отметьте пункт о кэшированных изображениях и файлах, выберите период и подтвердите. Галочки с паролей и cookie снимите, тогда входы на сайты сохранятся.

Где на телефоне очистить кэш браузера?

В настройках самого браузера, в разделе истории или конфиденциальности: там есть очистка данных, где можно оставить отмеченным только кэш. Кэш Safari на iPhone удаляют через системные настройки телефона, в разделе Safari, и вместе с ним уходит история. На Android кэш браузера можно стереть и в настройках приложений, пароли и закладки при этом останутся.

Чем кэш отличается от cookie и что будет, если удалить и то и другое?

Кэш хранит копии файлов, чтобы страницы открывались быстрее. Cookie же небольшие записи, по которым сайт вас узнаёт: вход в аккаунт, корзина, выбранный город. После очистки кэша сайты первый раз загрузятся чуть дольше, и только. После удаления cookie придётся заново входить в аккаунты, а корзины на многих сайтах опустеют.

Поменяли цену, а клиент видит старую: где застряла копия?

Откройте страницу в режиме инкогнито. Видна новая цена, значит, старая копия сидит в браузере клиента, и ему хватит обновить страницу с очисткой кэша. Если и в инкогнито цена прежняя, копия застряла на сервере или в CDN: сбросьте кэш сначала в CMS, потом в CDN.

Как сбросить кэш только у одного сайта, не трогая остальные?

Быстрее всего жёсткой перезагрузкой: Ctrl+F5 заново скачает файлы открытой страницы. Чтобы стереть всё, что браузер сохранил для этого сайта, удалите его данные в настройках браузера. Для проверки после правок хватит окна инкогнито.

Сколько держать HTML-страницу в кэше, чтобы цены не устаревали?

На сервере HTML кэшируют почти всегда и сбрасывают при изменении цен и остатков. В браузере его держат с no-cache или коротким сроком, чтобы каждый показ сверялся с сервером. Корзину, кабинет и оформление заказа в общий кэш не кладут вовсе.

Что делать, если браузеры запомнили ошибочный 301 редирект?

Исправить правило на сервере и смириться, что у тех, кто уже по нему прошёл, браузер ещё долго будет вести по старому пути: 301 редирект без явного срока он хранит, пока кэш не очистят. Поэтому новые редиректы сначала проверяют с кодом 302 или коротким max-age в ответе, а на 301 переключают, когда убедились, что всё ведёт куда нужно.

Какой срок хранения ставить стилям, скриптам и картинкам?

Если в имени файла есть версия, ставьте год: max-age=31536000 с пометкой immutable. Без версии такой срок опасен, браузер просто не узнает об обновлении, так что сначала настраивают версии, потом длинный кэш. Статику с коротким сроком хранения как раз отмечает PageSpeed Insights.

Кэш или кеш: как правильно писать?

Встречаются оба варианта. В документации и интерфейсах, например у 1С-Битрикс, чаще пишут «кеш», в статьях и разговорной речи «кэш». Главное, держать одно написание в пределах текста.

Настройку кэширования проверяем при техническом аудите сайта, а исправления вносим при доработке существующего сайта.

Документация MDN, Яндекса и 1С-Битрикс о кэшировании

Остались вопросы по теме «Кэш»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ПимкинОтвечает по темеСергей ПимкинВедущий SEO-специалист

Тарифы

Тарифы по теме

Все тарифы →
от 70 000 ₽/мес при оплате за 3 месяца, помесячно 80 000 ₽

Стартовый тариф для небольшого бизнеса: наводим порядок на сайте и получаем первые заявки из Яндекса и Google.

  • Техническая оптимизация сайта
  • Контентная оптимизация
  • Семантическое ядро под город или регион
  • Настройка Яндекс Вебмастера и Google Search Console
  • Цели в Яндекс Метрике
  • Ежемесячный отчёт по позициям, трафику и заявкам
  • Оптимизация поведенческих факторов
  • Оптимизация коммерческих факторов и E-A-T
SEO ProХит
от 90 000 ₽/мес при оплате за 3 месяца, помесячно 99 000 ₽

Тариф для растущего бизнеса. Работаем на количество заявок: считаем звонки через коллтрекинг и дорабатываем сайт под конверсию.

  • Техническая оптимизация сайта
  • Контентная оптимизация
  • Семантическое ядро под город или регион
  • Настройка Яндекс Вебмастера и Google Search Console
  • Цели в Яндекс Метрике
  • Ежемесячный отчёт по позициям, трафику и заявкам
  • Оптимизация поведенческих факторов
  • Оптимизация коммерческих факторов и E-A-T
от 135 000 ₽/мес при оплате за 3 месяца, помесячно 149 000 ₽

Для масштабирования бизнеса: SEO, A/B-тесты, карточки в Яндекс.Бизнесе и 2ГИС, техподдержка сайта. Нейросети берут на себя рутину, итог проверяют специалисты.

  • Техническая оптимизация сайта
  • Контентная оптимизация
  • Семантическое ядро под город или регион
  • Настройка Яндекс Вебмастера и Google Search Console
  • Цели в Яндекс Метрике
  • Ежемесячный отчёт по позициям, трафику и заявкам
  • Оптимизация поведенческих факторов
  • Оптимизация коммерческих факторов и E-A-T

Проверим ваш сайт бесплатно

Экспресс-аудит за 24 часа: скорость, индексация, мета-теги, коммерческие факторы и цели Метрики.