Подтвердить что ты не робот

Какой из них использовать: Expire Header, Last Modified Header или ETags

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

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

4b9b3361

Ответ 1

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

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

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

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

Настоящим преимуществом ETags является то, что вы можете надежно сравнить отпечатки пальцев. Временные метки Last-Modified немного более расплывчаты, поскольку они не проверяют, изменилось ли фактическое содержимое страницы.

См. также:

Ответ 2

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

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

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

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

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