Добавление заголовка Expires или Cache-Control
- Для статических компонентов: используйте принцип "срок действия неограничен", путём установки заголовка
Expires
на срок, истекающий в далёком будущем (far futureExpires
header) - Для динамических компонентов: используйте соответствующий заголовок
Cache-Control
, чтобы помочь браузеру с условными запросами
Дизайн Веб-страниц становится всё богаче и богаче, а это значит больше скриптов, таблиц стилей, изображений и Flash на странице. Первым посетителям вашей страницы, вероятно, придётся осуществить несколько HTTP-запросов, но используя заголовок Expires, Вы можете закешировать эти компоненты. Вы избежите ненужных HTTP-запросов при последующих просмотрах страницы. Заголовки Expires наиболее часто используются с изображениями, но они должны использоваться на всех компонентах, включая скрипты, таблицы стилей, и Flash-компоненты.
Браузеры (и прокси) используют кеш для уменьшения количества и размера HTTP-запросов, заставляя веб-страницы загружаться быстрее. Веб-сервер использует заголовок Expires в HTTP-ответах, чтобы сообщить клиенту сколько по времени может храниться в кеш конкретный компонент. Вот пример заголовка Expires, установленного на дату, истекающую в далёком будущем (far future Expires header ), который говорит браузеру, что этот ответ не устареет до 15 апреля 2010.
Expires: Thu, 15 Apr 2010 20:00:00 GMT
Если вы пользуетесь сервером Apache, используйте директиву ExpiresDefault, чтобы установить дату истечения срока действия по отношению к текущей дате. В следующем примере дата истечения срока действия в директиве ExpiresDefault устанавлена на 10 лет со времени запроса.
ExpiresDefault "access plus 10 years"
Имейте в виду, что если вы используете заголовок Expires, установленный на дату, истекающую в далёком будущем, то вам придется изменять имя файла при любых изменениях компонента. В Yahoo! мы часто делаем это частью процесса сборки: в номере версии заложено имя файла компонента, например, yahoo_2.0.6.js.
Использование заголовка Expires, установленного на дату, истекающую в далёком будущем, влияют на просмотры страниц, только после того, как пользователь уже посетил ваш сайт. Это никак не влияет на количество HTTP-запросов, когда пользователь посещает ваш сайт впервые, и кеш его браузера пуст. Поэтому увеличение производительности зависит от того, насколько часто пользователи посещают ваши страницы с заполненным кешом. ("заполненный кеш" уже содержит все компоненты страницы.) Мы рассмотрели этот момент в Yahoo! и оказалось, что 75-85 % просмотров страниц было совершено с заполненным кешем. Используя заголовок Expires, установленный на дату, истекающую в далёком будущем, Вы увеличиваете число компонентов, которые помещаются в кэш браузером и повторно используются при последующих просмотрах страниц, не используя при этом ни одного байта сверх интернет трафика пользователя.
Оригинал статьи на developer.yahoo.com
Перевод КОМТЕТ komtet.ru