Htaccess кэширование
Настройка файла htaccess — это не только возможность задать различные уровни доступа для файлов и папок, активировать преобразование ссылок, но и оптимизировать ваш ресурс, чтобы увеличить его юзабильность. В этом файле дополнительных конфигураций для серверов Apache и подобных им есть множество опций, которыми вы можете воспользоваться. И одна из них — это кэширование браузера пользователей, зашедших на сайт. Подробнее о том, как активировать кэш через htaccess вы узнаете в данной статье.
Содержание
Зачем использовать кэш браузера для своего сайта
Для начала стоит разобрать, что из себя представляет кэш. По сути, это временно сохраненная информация и файлы, к которым часто обращаются. То есть дополнительный буфер обмена, который использует не пользователь, а какие-либо службы или приложения. Например, кэш используют DNS-сервера, операционные системы, процессоры и браузеры. Наверняка вы слышали рекомендацию, вроде этой: «Используйте кэш браузера, чтобы ускорить работу сайта!». На самом деле работа сайта не будет ускорена за счет кэша.
Кэширование — это процесс копирования данных в кэш. Различные браузеры хранят эти файлы в операционной системе компьютера в разных местах. Чтобы активировать кэш браузера, пользователю не нужно самостоятельно обращаться к папкам, где хранится буфер — это происходит автоматически.
Обращение к кэшу работает быстрее, чем обработка внешних носителей, потому использование такого временного буфера — это хороший способ ускорить функционирование браузера.
Суть в том, что кэш преимущественно полезен не для скорости работы сайта, а для ускорения браузера. Ведь человек, который впервые попал на страницы вашего веб-ресурса, не заметит какой-либо разницы, даже если кэширование будет отключено. А вот когда тот самый посетитель зайдет во второй раз на сайт, его браузер кое-что уже будет знать о сайте, и обратившись к кэшу, он загрузит ресурс куда быстрее, чем впервые. И это, несомненно, понравится посетителю!
Юзабильность сайта — это важный фактор ранжирования. Кэш поможет улучшить пользовательский опыт на вашем веб-ресурсе. Рано или поздно, но это повлияет на позиции вашего сайта в поисковой выдаче. Как известно, чем быстрее работает ресурс, тем более лояльно к нему относятся поисковики. И пускай кэш не влияет напрямую на скорость ответа сервера, но ускорение браузера на вашем сайте — это в любом случае большой плюс для веб-ресурса.
Настройка кэширования браузера при помощи файла htaccess
Чтобы корректно и рационально настроить кэширование, недостаточно его просто включить. Используйте различные возможности директивы Cache Control для этого. Ведь нельзя добавить в кэширование все возможные файлы. Вам нужно кэшировать только те, которые редко редактируются. Ведь если браузер будет сохранять полную копию страницы, то пользователь не сможет увидеть новую информацию на сайте, так как веб-обозреватель вместо измененных файлов подгрузит старые их копии.
Директива Cache Control в файле конфигураций htaccess позволяет включить кэширование на определенный период времени. Эта опция отправляет команду об активации кэша вместе с HTTP-заголовками страниц. Браузер, увидев команду Cache Control, выполняет ее. И если вы указали кэшировать страницу на 5 минут, то при обращении веб-обозревателя к скопированной странице через 6 минут, браузер загрузит данные с сервера заново и вновь их сохранит на 5 минут.
К кэшируемым элементам можно отнести различные статичные файлы, которые постоянно находятся в каталогах страниц, и не меняются со временем. К примеру, это может быть дизайн страницы, ее логотип или какой-нибудь элемент, вроде картинки в посте. Нет смысла браузеру каждый раз загружать подобные файлы заново, потому стоит в директиве Cache Control файла htaccess включить загрузку кэша изображений и прочих подобных элементов.
Важно указать правильный временной промежуток, во время которого кэш браузера будет храниться на компьютере пользователя. Максимальный отрезок времени определяет команда max-age директивы Cache Control. Этот период указывается в секундах без упоминания о единицах подсчета. То есть если вы хотите, чтобы кэш хранился один час, то следует в параметре max-age директивы Cache Control указать цифру 3600. Для одного дня указывайте 86400, для недели — 604800, для месяца — 2628000, для года — 31536000 и т. д. Но не стоит на все типы файлов указывать одинаковый период кэширования, иначе есть вероятность, что ваши нововведения на сайте никто не заметит — они не будут загружаться из-за старых копий файлов, которые находятся в кэше.
Вместе с директивой Cache Control в файле htaccess также кроме максимального возраста кэша указывают доступ к кэшированию для разных групп: public, no-store или private. Опция public используется чаще всего. Она сообщает через директиву Cache Control, что кэширование может быть использовано любым пользователем с любым браузером. Именно эту опцию вам следует использовать в файле htaccess, если хотите ускорить работу своего сайта для всех посетителей. Если же вы планируете улучшить юзабильность веб-ресурса только для одного юзера на конкретной странице, то используйте опцию private. Подобный кэш использует социальная сеть Twitter, в которой страница пользователя для самого пользователя кэшируется, а для других посетителей — нет. И последняя опция no-store нужна для того, чтобы запретить какое-либо кэширования. Ее используют для онлайн-магазинов, где важно, чтобы пользователь видел свежую информацию, а не сохранял старую в браузер.
Что касается настройки времени кэширования для разных типов файлов, то лучше для каждой группы данных прописать свой параметр max-age с директивой Cache Control. Вот основные группы файлов и рекомендации по времени их кэширования:
- Картинки (файл с расширениями png, jpg, gif, jpeg и прочие) лучше кэшировать на длительные сроки, поскольку их редко изменяют, особенно если они находятся в уже опубликованных постах. Рекомендуется выставлять кэш на полгода или год.
- CSS — это стилевое оформление сайта, которое хранится в файлах формата .css. В целом, нельзя сказать, что вебмастера меняют файлы css только раз в год — это происходит чаще. Потому выставляйте max-age для CSS на неделю или месяц.
- JavaScript — это скрипты, которые часто сильно нагружают браузеры посетителей, потому их обязательно следует внести в список кэшируемых элементов. Но не стоит задавать период кэширования более, чем 1 месяц для JavaScript.
В целом, определение времени кэширования в директиве Cache Control — это ваше индивидуальное решение, поскольку разные вебмастера по-разному работают со своим сайтом. Учтите, что если вы добавили определенные типы файлов в кэш, а затем обновили их, то чтобы пользователи увидели обновление, необязательно отключать кэш — вы можете переименовать обновленный файл. После обновления имени файла браузер воспринимает его, как новый объект на сайте, который не занесен в кэш, и информация о ресурсе обновляется.
Чтобы включить кэширование через файл htaccess, достаточно вписать в него специальный код. Самый простой пример такого кода — это: Header set Cache-Control «max-age=2628000, public». Данный код активирует кэш для всех типов файлов и для всех браузеров на период в 2628000 секунд. Но учтите, что такой кэш весьма не практичен, поскольку разные типы файлов требуют различного периода хранения в браузере. Потому рекомендуется включить в код еще одну директиву — FilesMatch.
Чтобы добавить в список кэширования картинки через файл htaccess, вам следует прописать форматы изображений, которые вы используете на сайте между тегами FilesMatch. А посредине нужно будет указать стандартный код директивы Cache Control. Вот пример такого кода:
<filesMatch ".(jpg|jpeg|png|gif|ico)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
Указанные три строчки активируют кэширование картинок приведенных в скобках форматов для всех браузеров абсолютно всех пользователей ровно на 1 год. Подобные строки вам нужно написать и для прочих типов файлов, чтобы занести их в кэш с индивидуальным периодом хранения.
Какие еще есть способы активировать кэширование через файл htaccess
Помимо директивы Cache Control есть и другие опции, которые позволят вам включить кэширование для браузеров посетителей. Но при этом на вашем сервере должен быть активирован модуль mod _ expires. Этот модуль по аналогии с директивой Cache Control будет отправлять кэшируемые файлы вместе с HTTP-заголовками в браузеры пользователей. Директивы этого модуля стоит заключать между тегами в файле htaccess.
В первую очередь, вам следует активировать модуль отправки кеша через заголовки при помощи строки ExpiresActive On. Уже после этого в другой строке при помощи специальной команды вы сможете указать период, который кэш будет храниться на устройствах посетителей. Сделать это можно при помощи директивы ExpiresDefault. В этой директиве можно указывать промежуток как в секундах, так и в других временных единицах. Вот как будет выглядеть указание периода кэширования в 1 день при помощи записи в секундах: ExpiresDefault A 86400. А это аналогичная запись, только в другом формате: ExpiresDefault » access plus 1 days «.
Чтобы указать для различных типов файлов разные периоды кэша, вам следует использовать опцию ExpiresByType. После нее нужно будет прописать тип файла, а также их формат и период кэширования. Вот как выглядит активация кэша картинок с расширением gif на период в 2 месяца: ExpiresByType image/gif «access plus 2 months». Для текстовых файлов вместо image указывайте text, как и для скриптов и css-файлов. Для xml, html и прочих подобных расширений пишите application. Настройте таким образом кэширование для всех необходимых типов файлов.