Cache control .htaccess, как проверить заголовок cache control

Cache control — HTTP заголовок, который передается сервером пользовательскому браузеру при обработке запроса. Задание его производится в конфигурационном файле веб-сервера и непосредственно в программном коде сайта. Включив кэширование в .htaccess стоит проверить кэшируются ли данные на самом деле и устанавливается ли верный заголовок. Особенно это важно при больших файлах .htaccess, в синтаксисе которых возможны  ошибки.

Наличие заголовка можно проверить в браузере в отладочном режиме, передавая запросы серверу в консоли или используя специальные сервисы. Для задания заголовка Cache control .htaccess используется для сайтов, обслуживаемых веб-сервером Apache.

Часто для проверки того осуществляется ли кэширование используют GooglePageInsight или какие-либо специализированные сервисы.

Доверять им стоит не всегда поскольку они могут запрашивать у целевого сервера только информацию по конкретному сайту — на практике в большинстве случаев это означает, что происходит обращение к файлу index.php, который является скриптом (динамический контент обычно не кэшируется). Всевозможные сервисы при этом будут сообщать, что данные не кэшируются, изображения, HTML, CSS и JS кэшироваться будут.

При возникновении каких-либо сомнений лучше проверять кэшируются ли данные запрашивая файл с расширением, например jpg или png, которые чаще всего указываются в .htaccess непосредственно у сервера через консоль отправляя HTTP запрос.

Зарос должен выглядеть следующим образом:

printf «GET /wp-content/uploads/2016/12/11.css HTTP/1.1\nHost: sitename.ru\n\n\n» | /bin/nc.traditional 197.85.21.144 80 | grep 'Cache-Control'

Здесь присутствует путь к файлу, который проверяем, имя сайта и адрес сервера.

Наличие в выводе  строки Cache-Control с некоторым сроком жизни кэша означает, что кэширование происходит.

В случае если запрос произодится к изображению grep результата не даст, поскольку изображение — это бинарный файл. Бинарники стоит просматривать на предмет наличия заголовка, для удобства, например, выводя в консоль первые 20 строк файла при помощи head.

printf «GET /wp-content/uploads/2016/12/11.jpg HTTP/1.1\nHost: sitename.ru\n\n\n» | /bin/nc.traditional 197.85.21.144 80 | head -n 20

Для того чтобы запросить информацию у бэкэнд сервера достаточно изменить IP адрес в запросе и, при необходимости, порт. Так для Apache, работающего за NGINX адрес может выглядеть как 127.0.0.1 8080

Читайте также про связку Apache2 + Nginx