Завершающий тег по сравнению с заголовком истекает

Я озирался, но не смог выяснить, должен ли я использовать и Завершающий тег и, Истекает Заголовок или один или другой.

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

Я не хочу делать что-либо специальное как изменение имени файла или помещение некоторых странных символов на конце URL, чтобы заставить его не кэшироваться.

Кроме того, есть ли что-нибудь, что я должен сделать программно на моем конце в моих Сценариях PHP для поддержки этого или являюсь всем этим Apache?

353
задан Raedwald 24 September 2019 в 00:33
поделиться

2 ответа

Они немного отличаются - Завершающий тег не имеет никакой информации, которую клиент может использовать, чтобы определить, выполнить ли запрос для того файла снова в будущем. Если Завершающий тег - все, что он имеет, он должен будет всегда выполнять запрос. Однако, когда сервер читает Завершающий тег из клиентского запроса, сервер может затем определить, отправить ли файл (HTTP 200) или сказать клиенту просто использовать их локальную копию (HTTP 304). Завершающий тег является в основном просто контрольной суммой для файла, который семантически изменяется, когда содержание файла изменяется.

Истекает, заголовок используется клиентом (и прокси/кэши), чтобы определить, должен ли он даже выполнить запрос к серверу вообще. Чем ближе Вы к, Истекает дата, тем более вероятно это - клиент (или прокси) сделает Запрос HTTP для того файла с сервера.

Поэтому действительно то, что Вы хотите сделать, использовать ОБА заголовка - устанавливает, Истекает заголовок к рыночной стоимости на основе того, как часто содержание изменяется. Затем настройте Завершающие теги, которые будут отправлены так, чтобы, когда клиенты ДЕЙСТВИТЕЛЬНО отправляют запрос к серверу, он мог более легко определить, передать ли файл обратно.

Одно последнее примечание о Завершающем теге - при использовании сбалансированной с загрузки установки сервера с несколькими машинами рабочий Apache, Вы, вероятно, захотите выключить поколение Завершающего тега. Это вызвано тем, что inodes используются в качестве части хеш-алгоритма Завершающего тега, который будет отличаться между серверами. Можно настроить Apache для не использования inodes в качестве части вычисления, но затем Вы хотели бы удостовериться, что метки времени на файлах являются точно тем же, чтобы гарантировать, что тот же Завершающий тег сгенерирован для всех серверов.

671
ответ дан Oliver Weichhold 23 November 2019 в 00:23
поделиться

По умолчанию Apache генерирует Завершающий тег на основе inode число файла, измененная в последний раз дата и размер, который должен прекрасно подойти, чтобы сделать то, что Вы хотите. Я думаю, что это также генерирует по умолчанию Измененный в последний раз заголовок на основе времени последнего изменения файла на диске, который также прекрасно подходит, чтобы сделать то, что Вы хотите.

у Вас должен, вероятно, также быть Apache, отправляют, Истекает, заголовок датировал один год в будущем (согласно http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 ) так, чтобы браузеры знали, что содержание является кэшируемым. Взгляните на mod_expires для конфигурирования этого.

18
ответ дан David Z 23 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: