исправьте заголовки HTTP-ответа, чтобы после истечения срока действия содержимого было 304 секунды

Я бы хотел, чтобы срок действия HTTP-ответа истек через 24 часа (то есть браузер не будет делать никаких запросов для этого URL до завтра ). Но, если запрос будет повторно отправлен завтра после истечения срока действия, я хочу убедиться, что браузер отправит правильные заголовки запроса, чтобы сервер отправил 304 вместо того, чтобы заставлять клиента повторно загружать все тело ответа, если он не получил На сервере не менял. И я бы хотел, чтобы срок действия 304 также истек через 24 часа.

Во-первых, возможен ли этот сценарий? Или мне нужно выбирать между кешированием в стиле истечения срока и кешированием в стиле 304, но не обоими сразу? Если это возможно, каковы правильные заголовки ответа (как для начального ответа, так и для последующих 304), которые позволят этому случиться?

Если, как это часто бывает, ответ зависит от типа / версии браузера, то какие заголовки работают для каких браузеров - и какие браузеры вообще не смогут делать то, что я хочу? Меня интересуют только самые распространенные браузеры, которые используются сегодня (например, IE6 +, FF3 +, последняя версия Chrome, последняя версия Safari)?

Извините, если этот ответ уже был задан на SO - Я искал какое-то время и ничего не нашел .

УТОЧНЕНИЕ : я задаю этот вопрос, потому что я собираю автоматизированный набор тестов для проверки, независимо от платформы сервера, что веб-приложение генерирует правильные заголовки HTTP для создания поведения кэширования клиента, которое мы хотим, чтобы все наши веб-приложения имели. Так что меня не интересует (по крайней мере, сейчас), как настроить Apache / IIS / PHP / Rails / Django / JSP / ASP.NET / и т. Д. для создания правильных заголовков. Я просто хочу знать, только на уровне HTTP, каковы правильные заголовки.

ОБНОВЛЕНИЕ: Я нашел этот вопрос SO , который отвечает на часть моего вопроса. Согласно RFC 2616 10.3.5 , в нем говорится, что я должен включить заголовки Expires: или Cache-Control: max-age в заголовки 304, возвращенные сервер. Это определенно желаемое поведение.

Однако этот вопрос не дает ответа на вопрос, будет ли этот подход, соответствующий RFC, работать в существующих популярных браузерах, особенно IE6 / 7/8, которые являются обычными виновниками соответствия стандартам, но также IE9, FF4 +, последняя версия Chrome и последняя версия Safari, которые наше приложение также должно поддерживать. Если какой-либо из этих браузеров не работает в соответствии с требованиями RFC, есть ли обходные пути, которые я могу использовать?

7
задан Community 23 May 2017 в 11:47
поделиться