Настройте кеширование браузера правильно и получите мгновенные загрузки для вернувшихся пользователей. Полное руководство по Cache-Control, ETag и стратегиям кеширования.
Представьте пользователя, который возвращается на ваш сайт второй раз за неделю. В первый визит его браузер загрузил главную страницу, три таблицы стилей, два JavaScript-файла, логотип и пять изображений товаров. При повторном визите все эти ресурсы уже не нужно загружать заново. Они уже сохранены локально в кеше браузера. Но только если вы правильно настроили кеширование. Без этой настройки браузер каждый раз начинает загрузку с нуля, как будто пользователь никогда раньше на сайте не был.
Кеширование браузера — это механизм, который указывает браузеру пользователя сохранять определённые файлы локально и не запрашивать их повторно при последующих загрузках страницы. Это фундаментальная техника веб-производительности. Без неё даже идеально оптимизированный сервер и превосходно сжатые изображения не смогут обеспечить мгновенную загрузку для повторных посетителей.
Для SEO кеширование браузера критически важно по двум причинам. Первая: Google измеряет скорость загрузки для всех пользователей, включая повторных. Если постоянные посетители вашего сайта получают медленную загрузку из-за отсутствия кеширования, это отражается в данных Chrome User Experience Report и влияет на ранжирование. Вторая: поведенческие факторы повторных посетителей — глубина просмотра, время на сайте, конверсии — напрямую зависят от скорости загрузки. Пользователь, который ждёт загрузку, не просматривает дополнительные страницы.
Как работает кеширование браузера технически
Когда браузер впервые запрашивает ресурс с сервера, сервер может отправить в ответе HTTP-заголовки, указывающие политику кеширования. Браузер читает эти заголовки и принимает решение: сохранить ресурс локально или нет, и если сохранить — на какой срок.
При следующем запросе того же ресурса браузер проверяет свой локальный кеш. Если ресурс есть в кеше и срок его хранения не истёк, браузер использует локальную копию вообще без запроса к серверу. Это самый быстрый сценарий. Если срок хранения истёк, но ресурс возможно ещё актуален, браузер отправляет условный запрос серверу с проверочными заголовками. Сервер сравнивает версию ресурса и либо подтверждает, что ресурс не изменился, возвращая статус 304 Not Modified, либо отправляет новую версию.
Ключевой момент: даже условный запрос с ответом 304 требует сетевого обмена. Он быстрее полной загрузки, но медленнее использования локального кеша. Цель правильной стратегии кеширования — максимизировать использование локального кеша без запросов к серверу.
Ключевые HTTP-заголовки кеширования
Cache-Control является основным заголовком управления кешированием. Он заменил устаревший заголовок Expires и предоставляет более гибкие директивы. Параметр max-age указывает время жизни ресурса в секундах. Например, Cache-Control: max-age=2592000 означает, что ресурс можно хранить в кеше 30 дней.
Директива public разрешает кеширование ресурса в промежуточных прокси-серверах и CDN. Директива private ограничивает кеширование только браузером конечного пользователя, что важно для персонализированного контента. Директива no-cache не запрещает кеширование полностью, а требует от браузера проверять актуальность ресурса на сервере перед каждым использованием. Директива no-store полностью запрещает кеширование.
ETag — это уникальный идентификатор версии ресурса. Сервер генерирует ETag на основе содержимого файла. При условном запросе браузер отправляет заголовок If-None-Match со значением ETag, который у него сохранён. Если ETag на сервере совпадает, возвращается 304 Not Modified без передачи тела ответа.
Last-Modified работает аналогично ETag, но использует дату последнего изменения файла. Браузер отправляет If-Modified-Since с датой из своего кеша. Сервер сравнивает даты и возвращает 304, если файл не менялся. ETag точнее, поскольку дата изменения может не отражать изменение содержимого.
Стратегии кеширования для разных типов ресурсов
Разные ресурсы требуют разных стратегий кеширования. Изображения, шрифты и медиафайлы — идеальные кандидаты для агрессивного кеширования. Они меняются редко. Установите Cache-Control: public, max-age=31536000, immutable для изображений с уникальными именами. Значение 31536000 секунд равно одному году. Директива immutable указывает браузеру не отправлять условные запросы даже при обновлении страницы.
CSS и JavaScript файлы требуют баланса. Вы хотите агрессивного кеширования для производительности, но должны иметь возможность быстро распространять обновления. Используйте версионирование файлов: добавляйте хеш содержимого в имя файла. main.a1b2c3d.js вместо main.js. При изменении содержимого меняется хеш и, следовательно, URL. Браузер видит новый URL и загружает новый файл, в то время как старые URL остаются закешированными. Для версионированных файлов устанавливайте max-age на год.
HTML-страницы требуют осторожного подхода. Основная страница должна быть относительно свежей, чтобы пользователи видели актуальный контент. Используйте Cache-Control: no-cache, что заставляет браузер проверять актуальность перед каждым показом, но позволяет использовать кеш при подтверждении неизменности. Это быстрее чем полная загрузка, но гарантирует свежесть.
API-ответы и динамические данные не должны кешироваться в браузере. Используйте Cache-Control: no-store для данных, которые уникальны для каждого запроса или содержат чувствительную информацию.
Настройка кеширования на сервере
На Apache сервере кеширование настраивается через файл .htaccess с использованием модуля mod_expires. На Nginx сервере кеширование настраивается в конфигурационном файле сервера с директивами expires и add_header.
После настройки обязательно проверьте заголовки ответа вашего сервера. Откройте Chrome DevTools, перейдите на вкладку Network, загрузите страницу и проверьте заголовки для каждого ресурса. Вы должны видеть установленные Cache-Control и ETag заголовки. Инструмент Serpmax Performance Analyzer автоматически проверяет наличие и корректность заголовков кеширования для всех ресурсов при аудите страницы.
Как Serpmax помогает с кешированием
Serpmax Page Speed Analyzer проверяет заголовки кеширования для каждого ресурса, загружаемого страницей. Отчёт показывает: у каких ресурсов отсутствуют заголовки кеширования, у каких срок кеширования слишком короткий, какие ресурсы не используют ETag или Last-Modified, и какие ресурсы кешируются несмотря на частые изменения.
Инструмент также оценивает совокупное влияние отсутствия кеширования на скорость загрузки. Вы видите не просто список ресурсов без кеширования, но и оценку того, сколько времени теряет повторный посетитель из-за необходимости загружать эти ресурсы заново. Это переводит техническую проблему в измеримый бизнес-показатель.
Часто задаваемые вопросы
Можно ли кешировать сторонние ресурсы? Нет. Вы не контролируете заголовки, которые отправляют сторонние серверы. Шрифты Google, скрипты аналитики, виджеты социальных сетей кешируются по правилам их серверов. По возможности размещайте критически важные ресурсы на своём сервере.
Как очистить кеш у пользователей после обновления? Без версионирования файлов — никак. Вы не можете принудительно очистить кеш браузера пользователя. Именно поэтому версионирование через хеш в имени файла является лучшей практикой. Новое имя — новый ресурс — автоматическая загрузка.
Кеширование влияет на Core Web Vitals? Да, напрямую. Для повторных посещений кеширование драматически снижает LCP, поскольку изображения и шрифты уже загружены локально. Google учитывает скорость и для новых, и для повторных посетителей.
Заключение
Кеширование браузера — одна из самых недооценённых оптимизаций в SEO. Она технически проста в реализации, не требует изменения контента или дизайна, и приносит немедленную пользу для повторных посетителей. Учитывая, что значительная часть трафика многих сайтов приходится на вернувшихся пользователей, влияние кеширования на общую пользовательскую метрику скорости огромно.
Настройте заголовки Cache-Control для разных типов ресурсов. Внедрите версионирование файлов. Проверьте корректность настройки через Serpmax Performance Analyzer. Это базовая, но критически важная часть технической оптимизации, которую неоправданно часто пропускают.