Как использовать HTTP заголовок Cache-Control
Коллеги всем привет.
В сегодняшней статье мы поговорим о том как включить на вашем сайте HTTP заголовок Cache-Control, и зачем его нужно использовать в своих сайтах.
Каждый раз когда пользователь заходит на ваш сайт то сначала браузер отправляет запрос на веб-сервер, затем веб-сервер обрабатывает входящие параметры если они есть, потом веб-сервер может еще обращаться к базе данных, чтобы получить нужную информацию и только затем веб-сервер Apache или Nginx формирует ответ, и отправляет результат пользователю в браузер. При получении очень больших данных от сервера требуется выполнять много операций обмена данными между браузером пользователя и сервером, и страница не загрузится, пока не будут полностью получены все ресурсы с данными.
Все эти действия которые я описал вам, это на сегодняшней день очень дорогое удовольствие, особенно, если к вам на сайт пришел человек из мобильной сети с ограниченным количеством трафика, для него каждый ненужный сетевой запрос это трата денег. Еще очень важным аргументом почему стоит использовать заголовок Cache-Control это то что ваш сайт будет быстрее загружаться у тех пользователей которые уже не давно посещали ваш сайт, и тем самым будет меньшая нагрузка на ваш веб-сервер.
Cache-Control — относится к HTTP заголовкам, этот заголовок указывает что данные которые приходят от сервера нужно кэшировать браузером пользователя, Cache-Control будет кешировать как в клиентские запросы, так и в ответы веб-сервера. Политика Cache-Control включает способ кэширования ресурса, место его кэширования и максимальный возраст до истечения срока действия время жизни данных.
Заголовок Cache-Control разбит на директивы, наиболее распространенные я буду описывать ниже в статье.
Пример заголовка Cache-control.
Cache-Control: Max-Age
Директива max-age указывает на максимальное время в течение которого ресурс будет считаться актуальным, определяет в секундах. По истечении срока действия, браузер повторно отправит запрос на сервер, чтобы получить актуальные данные.
К примеру указав заголовок cache-control: max-age=240 означает, что ресурс действителен в течение 240 секунд, после чего браузер отправит запрос повторно, чтобы получить актуальную страницу с данными.
Cache-Control: No-Cache
Директива no-cache указывает на необходимость повторно отправить запрос на сервер для валидации страницы, перед тем как использовать кэшированные данные страницы.
Cache-Control: No-Store
Директива no-cache указывает браузеру, что данные которые он получает из сервера не кешировать. Такой вариант использования подходит обычно для конфиденциальных данных таких как логин и пароль пользователя и банковских карт.
Cache-Control: Public
Директива Public указывает что ответ сервера может быть за кеширован в любом кеше.
Cache-Control: Private
Директива Private указывает, что ответ предназначен только для одного пользователя и не должен помещаться в разделяемый кеш. К примеру ответ сервера на страницу, помеченный как частный, может кэшироваться браузером пользователя, но не сетью доставки контента CDN.
Чтобы бы нам установить HTTP заголовок Cache-Control на сайте с помощью php, нам нужно воспользоваться специальной функцией которая предназначена для установки HTTP заголовков, и она называется header(). Вам нужно перейти на ту страницу которую вы хотите кешировать и добавить эту функцию в самый верх php файла.
header("Cache-Control: max-age=3600");
Этим примером я указываю что я хочу чтобы страница main имела возможность кешироваться в браузере пользователя на один час. Не забываем что время нужно указывать в секундах.
Если на вашем сайте не используется язык php, а только сам html, то для таких случаев мы можем воспользоваться html тегом meta.
<meta http-equiv="Cache-Control" content="public, max-age=3600" />
Здесь важный момент заключается в том что заголовок Cache-Control нужно указывать именно в теле тега head, а не где-нибудь в другом месте.
В итоги коллеги мы сегодня познакомились с очень важной вещью как HTTP заголовок Cache-Control. В этом заголовке очень много разных директив, но я вам показывал самые распространённые и которые вы 100% будете использовать на своих сайтах. Этот заголовок вообще используется вместе с такими заголовками как Last-Modified и If-Modified-Since, но об этих заголовках я буду рассказывать в других статьях.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.