Ключевые слова: Cache‑Control, max‑age, Apache 2, mod_headers, кэширование, настройка заголовков, оптимизация скорости, серверные настройки

Почему max‑age важен для производительности сайта

Когда браузер или промежуточный прокси‑сервер сохраняет страницу, он использует директиву max‑age из заголовка Cache‑Control.

  • Слишком большой срок - пользователь может видеть устаревший контент.
  • Слишком короткий срок - каждый запрос идёт к серверу, что замедляет загрузку.

Оптимальная настройка позволяет сократить количество запросов и одновременно гарантировать актуальность данных.

1. Подключаем модуль mod_headers

Для изменения заголовков Apache 2 нужен модуль mod_headers. Он не включён по‑умолчанию, поэтому его необходимо активировать:

sudo a2enmod headers          # включаем модульsudo systemctl restart apache2 # перезапускаем сервис

Проверить, что модуль запущен, можно командой:

a2query -m headers

Ответ headers (enabled by site administrator) подтверждает успешную активацию.

2. Добавляем заголовок Cache‑Control

Самый надёжный способ - прописать правило в конфигурации виртуального хоста (обычно /etc/apache2/sites-enabled/000-default.conf).

2.1. Общий параметр для всего сайта

<Directory /var/www/html>    Header set Cache-Control "max-age=86400"</Directory>

Здесь 86400 - количество секунд в 24 часа (60 × 60 × 24).

2.2. Защита от отсутствия модуля

Если модуль случайно отключён, сервер может не запуститься. Чтобы избежать ошибки, оберните правило в IfModule:

<Directory /var/www/html>    <IfModule headers_module>        Header set Cache-Control "max-age=86400"    </IfModule></Directory>

3. Разные сроки для разных типов файлов

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

<FilesMatch "\.(ico|png|jpe?g|webp)$">    Header set Cache-Control "max-age=604800"</FilesMatch>

604800 секунд = 7 дней.

4. Таблица часто‑используемых значений

Период Секунд
5 минут 300
10 минут 600
30 минут 1800
1 час 3600
12 часов 43200
24 часа 86400
3 дня 259200
7 дней 604800
30 дней 2592000

Эти цифры удобно копировать в конфигурацию без лишних вычислений.

5. Отключение кэширования

Если нужно полностью запретить хранение ответа, используйте один из вариантов:

Header set Cache-Control "no-cache"# илиHeader set Cache-Control "max-age=0"

Оба действия заставят браузер запрашивать ресурс каждый раз.

6. Публичный vs приватный кэш

  • public - контент может храниться в общих кэширующих слоях (прокси, CDN). Подходит для статических файлов, доступных всем пользователям.
  • private - кэш сохраняется только в браузере конкретного пользователя. Используется для персонализированных страниц (например, после авторизации).

Пример для публичных ресурсов:

Header set Cache-Control "max-age=86400, public"

Пример для персонализированных страниц:

Header set Cache-Control "max-age=86400, private"

7. Проверяем работу заголовков

После внесения изменений запустите:

curl -I https://yourdomain.com/path/to/file

В ответе должно быть строка вида:

Cache-Control: max-age=86400, public

Если заголовок отсутствует, проверьте синтаксис конфигурации и убедитесь, что mod_headers действительно включён.

8. Лучшие практики для 2027 года

  1. Минимизировать количество "no‑cache" - избыточные запросы ухудшают показатель Core Web Vitals.
  2. Разносить сроки кэширования - короткие для HTML, длинные для статических ресурсов.
  3. Использовать ETag и Last‑Modified в совокупности с max‑age для гибкой проверки актуальности.
  4. Тестировать на реальных пользователях - инструменты Chrome DevTools и Lighthouse покажут, как кэш влияет на загрузку.

Следуя этим рекомендациям, вы получите быстрый, надёжный сайт, который удовлетворит требования Google EEAT и Helpful Content Update в 2027 году.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *