Кэширование файлов в браузере

пошаговая инструкция · Быстро: 5–15 минут

← Все инструкции

1. Что произошло

Правила кэширования говорят браузеру не скачивать неизменные файлы повторно.

2. Почему это важно

Каждый визит заново скачивает одно и то же — сайт медленнее. После исправления: Повторные заходы будут быстрее.

3. На каких страницах обнаружено

Заголовки Cache-Control и Expires у статических файлов (CSS, JS, картинки, шрифты).

Чтобы увидеть адреса на вашем сайте, откройте инструкцию из отчёта или добавьте домен в адрес: /fix/cache/ваш-сайт.ru.

4. Как исправить

Шаги

  1. Разрешите браузеру хранить статические файлы: изображения, шрифты — на месяц и больше, CSS и JS — на месяц, если в имени файла есть версия (style.css?v=123 или style.123.css).
  2. HTML-страницы кэшировать надолго не нужно.
  3. При обновлении файла меняйте версию в имени, иначе посетители увидят старое оформление.
WordPress
  1. WordPress подставляет версию в адреса стилей и скриптов сам. Правила для .htaccess добавляют плагины кэширования.

5. Готовый код

Замените example.com на свой домен. Перед правкой конфигурации сделайте резервную копию файла.

nginx

nginx
location ~* \.(?:css|js|woff2?|ttf|svg|ico|jpg|jpeg|png|gif|webp|avif)$ {
    expires 30d;
    add_header Cache-Control "public";
    access_log off;
}

Apache

Apache (mod_expires)
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/webp "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 month"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType font/woff2 "access plus 1 year"
</IfModule>

6. Как проверить результат

  1. В ответе есть Cache-Control: max-age=… или Expires на будущую дату.
  2. Нажмите «Перепроверить сайт».
Заголовки статического файла
curl -sI https://example.com/style.css | grep -iE 'cache-control|expires'

Чтобы перепроверить сайт, откройте отчёт и нажмите «Проверить заново».