Заголовки ETag и Expires, т.е. кеширование элементов страницы в браузере

445

При посещении сайта его отдельные элементы сохраняются в кеше браузера, откуда их можно прочитать при необходимости. Чтобы эффективно его использовать, мы устанавливаем соответствующий срок действия элемента. Заголовки ETag и Expires используются для этой цели.

https ETag
Заголовок ETag указывает, был ли файл изменен и необходимо ли его снова загружать с сервера. Сначала он анализируется, а когда он включен, другие заголовки пропускаются. Сравнение основано на изменении размера, даты последней модификации или контрольной суммы. Требуется отправить запрос на сервер для внесения изменений. Кроме того, он не всегда работает должным образом, например, если после редактирования изображения его размер не изменился, новое изображение не будет загружено.

Полное отключение заголовка для всех элементов >>> заголовок будет полностью пропущен. Но в этой ситуации мы должны установить время действия файлов html / xml, используя заголовок Expires.

Header unset ETag
FileETag None

Исключение для выбранных файлов:

FileETag None

https истекает
Заголовок Expires указывает, как долго объект обновлялся. Этот метод позволяет использовать кэш браузера для более быстрой загрузки выбранных элементов. Браузер считывает дату истечения срока действия и, если файл не истек, он загружается из кэша браузера. Это ограничивает количество запросов к серверу, мы ограничиваем потребление передачи, и страница загружается быстрее. Мы сами определяем, для каких файлов мы будем устанавливать заголовок expiry. Заголовок, полезный для кэширования статических, редко изменяемых файлов, таких как изображения, значки, стили CSS и т. Д.
Чтобы браузер рассмотрел этот заголовок, необходимо отключить заголовок ETag для файлов, которые мы хотим кэшировать таким образом. Только при выключении ETag браузер будет основан на заголовках Cache-Control и Expires.

Мы используем заголовок для добавления кода в .htaccess. Например, следующий код устанавливает время действия для файлов изображений и CSS на 30 дней (число AX … X означает секунды; 2592000 секунд = 30 дней):

ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType text/css A2592000

Чтобы использовать заголовок для других типов файлов, используйте следующую шпаргалку:

применение / х-Javascript; текст / html; текст / Richtext; Изображение / SVG + XML; текст / равнина; текст / XSD; текст / XSL; текст / XML; Видео / АФС; видео / AVI; изображение / BMP; Приложение / Java; видео / DivX; применение / MSWord; применение / х-msdownload; изображение / GIF; применение / х-GZIP; х-значок; изображение / JPEG; Приложение / vnd.ms доступа; аудио / миди; видео / QuickTime; аудио / MPEG; видео / mp4; Видео / MPEG; аудио / OGG; применение / PDF; изображение / JPEG; аудио / X-RealAudio; применение / х-ударноволновая-вспышка; применение / х-смола; Аудио / WMA; Применение / застежка-молния

Более продвинутый код:

ExpiresActive On
ExpiresByType text/html A1
ExpiresByType application/xhtml+xml A1
# Add Expire header set to 30 days (far future)
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType image/vnd.microsoft.icon A2592000
ExpiresByType image/svg+xml A2592000
ExpiresByType text/plain A2592000
# Add Expire header set to 1 day
ExpiresByType text/xml A108000
ExpiresByType application/x-httpsd-php A108000
ExpiresByType application/x-httpsd-fastphp A108000
ExpiresByType application/x-httpsd-php-source A108000
# Add Expire header set to 1 hour
ExpiresByType application/xml A108000
ExpiresByType application/atom+xml A108000
ExpiresByType application/rss+xml A108000

Пример 1
Код можно использовать на большинстве страниц. Для выбранных типов файлов (изображения, стили CSS, js) срок действия установлен на 30 дней (ExpiresDefault A2592000), а ETag отключен. Cache-Control заставляет браузер кэшировать (установка значения «no-cache» приводит к игнорированию других заголовков, ответственных за кэширование).

ExpiresActive on
ExpiresDefault A2592000
Header append Cache-Control "public"
Header unset ETag
FileETag None

Пример 2
Простой код для установки заголовка Expires для выбранных типов файлов.

ExpiresActive On
ExpiresDefault A604800

Пример 3
Обширный код. Описание в комментариях.

# Aktywacja Expires u ustawienie domyslnego czasu na 0
ExpiresActive On
ExpiresDefault A0
# Ustawienie czasu wygasniecia dla plikow medialnych na 1 rok i zmuszenie przegladarki do ich buforowania
ExpiresDefault A29030400
Header append Cache-Control "public"
# Ustawienie czasu wygasniecia plikow graficznych na 1 tydzien i zmuszenie przegladarki do ich buforowania
ExpiresDefault A604800
Header append Cache-Control "public"
# Ustawienie czasu wygasniecia plikow na 2 godziny
ExpiresDefault A7200
Header append Cache-Control "proxy-revalidate"
# Wymuszony zakaz buforowania dla dynamicznych plikow
ExpiresActive Off
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
Header set Pragma "no-cache"

Пример 4

# Expire handler
# Aktywacja expirations.
ExpiresActive On
# Cachowanie wszystkich plikow przez tydzien
ExpiresDefault A604800
# Cachowanie przez 1 rok
ExpiresDefault A31449600
# Cachowanie przez 1 miesiac
ExpiresDefault A2592000
# Cachowanie przez 1 miesiac
ExpiresDefault A604800
# Cachowanie przez 1 sekunde
ExpiresDefault A1

Пример 5

# Turn on Expires and set default expires to 3 month
ExpiresActive On
ExpiresDefault A7257600
ExpiresByType image/x-icon A14515200
# Set up caching on media files for 1 month
ExpiresDefault A2419200
# Set up caching on commonly updated files 1 month
ExpiresDefault A2419200
FileETag None

Пример 6

# Expire images header
ExpiresActive On
ExpiresDefault A0
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/ico A2592000
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
# kill them etags
FileETag none

Интересный сайт: Ultimate .htaccess Guide – исчерпывающее руководство по .htaccess