ExpiresActive On .htaccess объяснение - PullRequest
       0

ExpiresActive On .htaccess объяснение

3 голосов
/ 08 октября 2010
[i]ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
BrowserMatch "MSIE" brokenvary=1
BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
BrowserMatch "Opera" !brokenvary
SetEnvIf brokenvary 1 force-no-vary[/i]

недавно видел этот код в примере .htaccess.

Предположительно ExpiresByType устанавливает время истечения для изображений - это связано с кэшем браузера посетителей? и что переводит A2592000 ?

а что означает "brokenvary = 1"? Я так понимаю, он ищет UserAgent, но что тогда?

спасибо!

Ответы [ 2 ]

10 голосов
/ 08 октября 2010

Предположительно ExpiresByType устанавливает время истечения для изображений - это связано с кэшем браузера посетителей?

Да. mod_expires позволяет легко настроить правила истечения срока действия на основе типа.

Но время истечения указывает только время обновления определенного ответа.Это не обязательно означает, что ответ кэшируется .Но в общем случае любой успешный ответ может быть кэширован, если только нет ограничений :

Если это не ограничено директивой управления кэшем (раздел 14.9 ), aсистема кэширования МОЖЕТ всегда сохранять успешный ответ (см. раздел 13.8 ) в качестве записи кэша, МОЖЕТ вернуть ее без проверки, если она свежая, и МОЖЕТ вернуть ее после успешной проверки.

Таким образом, если вы не укажете ответ, который не должен храниться вообще (т. Е. С использованием no-store), ответ может храниться как в общедоступных, так и в общих (локальных) кэшах.


А на что переводит A2592000?

Время обновления ответа может быть выражено с использованием абсолютного значения времени (например, «2010-10-09») или относительного значения времени(например, «завтра»).Формат даты A2592000 использует последнее значение времени, так как A обозначает время доступа , а 2592000 - количество добавляемых секунд.Таким образом, A2592000 означает « 2592000 секунд с момента доступа на ».


А что означает «brokenvary = 1»?Я понял, что он ищет UserAgent, но что тогда?

В Apache есть переменные среды специального назначения , где force-no-vary - одна из них:

Это приводит к удалению любых полей Vary из заголовка ответа перед его отправкой обратно клиенту.Некоторые клиенты неправильно интерпретируют это поле;установка этой переменной может обойти эту проблему.Установка этой переменной также подразумевает force-response-1.0 .

Теперь поле заголовка Vary используется для указания список имен полей заголовка, который сервер использовал для выбора ответа среди нескольких представлений :

Сервер ДОЛЖЕН использовать поле заголовка Vary для информирования кэша о том, какие поля заголовка запроса использовались длявыберите из нескольких представлений кэшируемого ответа, подлежащего согласованию на основе сервера.

Так что, если вы используете согласование содержимого, запрашивается общий запрошенный URL-адрес, такой как /document.html, и существует несколько представлений этого(например, на английском и немецком языках), и ваш сервер выбирает вариант на немецком языке, так как Accept-Language указывает значение de, сервер будет содержать поле Vary , содержащее Accept-Language дляпусть кэши знают, что выбор был основан на значении Accept-Language .

Но некоторые пользовательские агенты не понимают этого правильно,И в этом случае поле заголовка Vary не следует отправлять, что можно сделать, установив переменную среды специального назначения force-no-vary.

2 голосов
/ 08 октября 2010

ExpiresByType - это директива Apache модуля mod_expires, который генерирует заголовки HTTP-ответов «Expires» и «Cache-control».Эти заголовки сообщают браузеру, что разрешено кэшировать ресурс в течение определенного периода времени.

Из документации (http://httpd.apache.org/docs/2.0/mod/mod_expires.html):

'A' means the client's access time should be used.

Пример изта же страница может объяснить вещи:

# enable expirations
ExpiresActive On
# expire GIF images after a month in the client's cache
ExpiresByType image/gif A2592000
# HTML documents are good for a week from the
# time they were changed
ExpiresByType text/html M604800
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...