Настройка кэширования на сервере


Настройка кэширования на сервере позволяет значительно сокращать время повторной загрузки страницы, сохраняя ее содержимое в кэше при первом обращении. Кэшироваться может только статика: 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 прописывать все правила следует в конфигурационных файлах этого пакета.

Сказать спасибо