Какой из них использовать: Expire Header, Last Modified Header или ETags - PullRequest
31 голосов
/ 16 марта 2011

Я использую PHP на Apache и не понимаю, как реализовать кэширование на стороне сервера, чтобы ускорить загрузку сайта.

В чем разница между заголовками Expires, Last-Modified и ETag, и какой из них следует использовать в какой ситуации?

Ответы [ 2 ]

39 голосов
/ 05 марта 2014

Expires и Cache-Control являются «сильными заголовками кэширования»

Last-Modified и ETag являются «слабыми заголовками кэширования»

Сначала браузер проверяет Expires/Cache-Control, чтобы определитьделать или нет запрос к серверам.

Если он должен сделать запрос, он отправит Last-Modified/ETag в HTTP-запросе.Если значение документа Etag соответствует этому, сервер отправит код 304 вместо 200, а содержимое не будет.Браузер загрузит содержимое из своего кэша.

Я рекомендую использовать один из сильных заголовков кэширования вместе с одним из слабых заголовков кэширования.

22 голосов
/ 16 марта 2011

Вы можете использовать заголовок Expires вместе, но независимо от двух других. Он универсально поддерживается прокси и кешем браузера.

Разница между марками ETag и Last-Modified более семантическая. ETag непрозрачны для клиентов. Обычно это контрольная сумма. В то время как заголовок Last-Modified может интерпретироваться клиентами. Понятно, что последняя измененная временная метка работает линейно.

Если браузер запрашивает ресурс с If-Unmodified-Since, то широкий диапазон временных отметок в прошлом может соответствовать такому условию. Если ваши страницы часто меняются, тогда может быть полезна метка времени последнего изменения.

Подход ETag, с другой стороны, приводит к тому, что клиенты сохраняют один последний отпечаток на ресурс. (Я не уверен, что кеши браузера помнят несколько ETag). По запросу указывается только один или несколько возможных токенов If-None-Match. Это может означать больше промахов. Кроме того, вам нужно сравнить несколько контрольных сумм, тогда как с отметкой времени последнего изменения вы можете получить арифметическое сравнение.

Настоящее преимущество ETag заключается в том, что вы можете надежно сравнивать отпечатки пальцев. Отметки времени последнего изменения немного более расплывчаты, поскольку они не проверяют, изменился ли фактический контент страницы.

Смотри также:

...