2.4.1.1.13. Серверное кеширование
Важные моменты:
- При включении кеширования убедитесь, чтобы сайт отдавал заголовки запрета кеширования при работе с его админ-панелью, иначе такие страницы могут попадать в кеш и быть доступны неавторизованным пользователям, либо настройте исключения.
- При использовании сессий PHP автоматически добавляет в ответы заголовок
Cache-Controlи кеширование по умолчанию не работает. Для работы кеширования значение ограничителя кеша должно бытьpublic(см. session_cache_limiter).
Как работает кеширование
При использовании кеширования все ответы сервера сохраняются в кеше и при поступлении новых запросов вместо передачи их на обработку скриптам сайта возвращается уже готовый ответ из кеша. Использование кеширования помогает существенно снизить нагрузку на веб-сервер.
Страница не сохраняется в кеше:
- Если запрос содержит:
- Заголовок
Cookieс ключомnocacheс непустым значением и не равным0. - GET-параметр
nocacheс непустым значением и не равным0. - Заголовок
Authorizationс непустым значением и не равным0.
- Если ответ содержит:
- Заголовок
X-Accel-Expiresсо значением0. - Заголовок
Set-Cookie. - Заголовок
Varyсо специальным значением*. - Заголовок
Cache-Controlс любым из значений:max-age=0,private,no-store,no-cache.
- Если в разделе «Хостинг → Мои сайты → ваш сайт → Настройки PHP» отключён параметр «output_buffering» (когда буферизация отключена, nginx не обрабатывает данные с веб-сервера и не может их кешировать).
Существующий кеш игнорируется, если запрос содержит такие же заголовки/параметры, при которых страница не сохраняется в кеше (см. выше). ⚠️ Кеш при этом не перезаписывается и не удаляется. Например, при запросе A страница была сохранена в кеше, затем поступил запрос B с условиями для игнорирования кеша — кеш был проигнорирован и страница была возвращена сайтом, если поступит запрос C без условий для игнорирования кеша — будет возвращён кеш, который был сгенерирован для запроса A.
С помощью заголовка ответа X-Cache-Status можно следить за использованием кеша:
- Страница была возвращена сайтом:
MISS— страницы не было в кеше.BYPASS— кеш был проигнорирован (см. выше).EXPIRED— срок жизни кеша истёк.
- Страница была возвращена из кеша:
STALE— срок жизни кеша истёк, но с сайта не удалось получить актуальную версию страницы.REVALIDATED— срок жизни кеша истёк, но он был повторно проверен с помощью заголовкаIf-Modified-SinceилиIf-None-Match.UPDATING— срок жизни кеша истёк, но страница в процессе обновления с сайта.HIT— страница была возвращена из кеша.
Когда кеш игнорируется и в ответе есть заголовок Cache-Control, к статусу может быть добавлено обозначение причины, по которой кеш был проигнорирован: /PRIVATE, /NO-CACHE, /NO-STORE, /MAX-AGE.
Настройка кеширования
Для настройки кеширования в разделе «Хостинг → Мои сайты → ваш сайт → Настройки сайта» на вкладке «Кеширование» в блоке «Настройки кеширования сайта» выберите нужный режим, укажите срок жизни и сохраните изменения:
- Режим:
- Отключено — кеширование отключено.
- Включено — кеширование с учётом GET-параметров (для запросов к одной и той же странице с разными GET-параметрами и без них из кеша будут возвращаться разные ответы).
- Игнорировать параметры запроса — кеширование с игнорированием GET-параметров (для запросов к одной и той же странице с разными GET-параметрами или без них из кеша будет возвращаться одинаковый ответ).
- Срок жизни — через сколько минут с момента последнего использования кеш будет удалён.
- Подбирается индивидуально. Для сайтов с частыми обновлениями контента можно использовать небольшие значения, с редкими обновлениями — более высокие.
Настройка исключений
Если нужно, чтобы какие-то страницы или разделы сайта не попадали в кеш независимо от наличия необходимых для этого заголовков, в блоке «Исключения из кеширования» добавьте правила для их исключения:
После нажатия кнопки «Добавить» в форме добавления указываются следующие данные:
- Применение — по какой части URL будет выполняться поиск:
- URL начинается на — в начале URL.
- URL заканчивается на — в конце URL.
- URL содержит — в любой части URL.
- URL — строка, поиск которой будет выполняться в выбранной части URL:
- Домен указывать не нужно.
- Слеш
/в начале и конце указывать не нужно.
Несколько примеров:
- Если выбрать URL начинается на и указать URL как
admin, исключение добавится как/admin*и кеширование не будет применяться для всех URL, которые начинаются с/admin. - Если выбрать URL заканчивается на и указать URL как
page, исключение добавится как*/pageи кеширование не будет применяться для всех URL, которые заканчиваются на/page. - Если выбрать URL содержит и указать URL как
contains, исключение добавится как*/contains*и кеширование не будет применяться для всех URL, в середине которых есть/contains.
Очистка кеша
В блоке «Настройки кеширования сайта» нажмите «Очистить кеш».
Комментарии