Настройка кэширования на сервере позволяет значительно сокращать время повторной загрузки страницы, сохраняя ее содержимое в кэше при первом обращении. Кэшироваться может только статика: html, css и изображения. Преимущественно из них и состоит контент любого сайта.
Суть кэширования в том, чтобы передавать веб-браузеру клиента заголовки в HTTP-запросах и ответах, заставляющие его сохранять статическое содержимое, которое изменяется редко, и отдавать его повторно уже из кэша не отправляя повторные запросы на сервер. За счет этого снижается трафик и увеличивается скорость отдачи контента.
Настройки кэширования можно задавать в конфигурационных файлах nginx в случае применения связки Nginx + Apache или использовании Nginx с php-fpm.
Если же в качестве веб-сервера применяется только Apache необходимо задействовать модуль headers.
Сервер будет лишь отдавать нужные заголовки, кэшировать данные будет клиентский браузер.
На сервере нужно убедиться в том, что модуль включен
apache2ctl -M | grep headers
Если вывод не пустой — так и есть. Модуль включен по умолчанию. При необходимости включаем:
a2enmod headers
Все параметры кэширования могут быть настроены в файле .htaccess, который размещается в корне сайта.
Можно задать типы файлов, которые необходимо кэшировать и временной промежуток, в течение которого данные будут отдаваться браузером из кэша. Значение max-age задается в секундах.
<FilesMatch '.(jpg|jpeg|png|ico|js|css|pdf)$'>
Header set Cache-Control 'max-age=2592000'
Для определенных файлов (чаще всего скриптов) кэширование можно принудительно отключить. Делается это следующим образом:
<FilesMatch '.(php|cgi|spl|fcgi)$»>
Header unset Cache-Control
Расширения можно добавлять и убирать добиваясь необходимого для оптимальной работы сайта режима работы сервера.
Настройка кэширования на сервере с использованием модуля expires
Также для установки параметров кэширования может быть использован модуль expires. Задавать продолжительность хранения информации в кэше можно по времени доступа посетителя к файлу.
Делается так:
ExpiresActive On
ExpiresDefault 'access plus 1 month'
ExpiresByType image/jpeg 'access plus 1 months 1day 1 hour'
ExpiresByType text/html 'access plus 1 months 1day 2 hours'
По умолчанию установлен срок хранения кэша в 1 месяц с момента получения доступа к содержимому, также временные интервалы можно задавать в годах, месяцах, неделях, днях, часах, минутах, секундах. Это продемонстрировано для файлов типа jpeg и html.
Проверить добавляется ли заголовок Cache Control можно используя сервис CACHE-CONTROL-CHECKER
Читайте также про настройку кэширования средствами Nginx, если на фронтэнде работает Nginx прописывать все правила следует в конфигурационных файлах этого пакета.