2015-09-08 4 views
1

Мы рассматриваем используя следующую директиву кэширования в нашем файле .htaccessКаков правильный синтаксис директивы кэширования для mod_expires?

ExpiresByType text/html "access" 

является то, что правильный синтаксис? И что это значит?

Мое занижение (и тестирование в 4 основных браузерах показано) заключается в том, что, когда клиент обращается к файлу HTML, он останется в кеше и вытащится из его кеша, пока мы не изменим HTML-файл на нашем сервере, при этом клиент вытащит файл с нашего сервера и использует измененную/обновленную копию.

Документы для mod_expires ясно показывают, что дополнительные аргументы являются необязательными.

ответ

1

ExpiresByType text/html "access"

Ну, это «действительно», но это эффективно истекает кэш мгновенно (если не существует другой механизм кэширования на месте - см. Ниже)

Директива ExpiresByType просто управляет заголовками и Cache-Control: max-age. Вышеуказанная директива приводит к тому, что заголовок Expires устанавливается в сейчас (текущее время) и max-age: 0 - другими словами: ноль.

, когда клиент обращается к файлу HTML, он будет оставаться в его кэш и потянуться от его кэша, пока мы не изменить файл HTML на нашем сервере

Это не связано с ExpiresByType директивы (как упоминалось выше), в котором явно указывается «доступ», а не «модификация».

Что вы, вероятно, видите, это кеширование в результате заголовка Last-Modified (Ответ) и заголовков If-Modified-Since (запроса), но это довольно раздельно и не контролируется mod_expires.

+0

Точно, я вижу заголовок if-modified-since, и я вижу только это, когда используется директива ExpiresByType. Разумеется, в целом это эквивалентно: if-modified-since time time, обслуживает самую последнюю копию. – user1749141

+0

Единственная разница между «доступом» и «модификацией» в соответствии с apache заключается в том, что «доступ» относится к определенному браузеру, тогда как «модификация» применяется ко всем браузерам на одном компьютере. Например. если я посещаю страницу с помощью MSIE, то Chrome увидит, что страница истекло в то же время, когда MSIE истекает. Наше тестирование показало, что это тоже так. – user1749141

+0

_browser_ отправляет заголовок 'If-Modified-Since' как часть _request_, когда он ранее кэшировал ответ сервера с заголовком' Last-Modified'. Ваш сервер отправляет заголовок 'Last-Modified' как часть ответа, но это не имеет ничего общего с mod_expires и директивой' ExpiresByType'. «if-modified-since time time» - это не так, как это работает, сервер не знает, когда вы последний раз обращались к сайту. _if-modified - поскольку он был последним-изменен - ​​эти два заголовка представляют собой пару, которые работают вместе. – MrWhite

Смежные вопросы