HTTP Истекает значения заголовка «0» и «-1»

В чем разница между Expires: 0 и Expires: -1 в заголовке ответа HTTP? RFC 2616 определяет недопустимые форматы даты, особенно, включая значение «0», как истекло . Однако некоторые серверы (например, www.google.de) отвечают с Expires: -1 .

Есть ли преимущество перед использованием -1 над 0 или это даже требуется для некоторых сломанных HTTP-клиентов?

Проблема заключается в том, как недопустимый заголовок Expires обрабатывается Internet Explorer (особенно более старые версии). IE использует механизм компоновки Trident и API WinINET для обработки HTTP-запросов. Как вы знаете, срок действия Expires может быть указан в заголовке HTTP

 Expires: 0 

или в метатеге

  

Во втором случае Expires стал частью содержимого ответа (не содержимого заголовка), поэтому он будет обработан Trident и затем распространен в WinINET :

Если WinINET загружает ответ с недопустимым заголовком Expires (например, тот, который не содержит допустимого значения HTTPDATE), и никаких других директив кэширования, он будет отмечать, что документ истекает час назад. Однако Trident не имеет такой логики. Если вы укажете недействительное время, Trident захватывает текущую временную метку и использует это как истечение срока действия. Trident также будет использовать текущую временную метку, если она встречает директиву Pragma: no-cache. Если пользователь пытается повторно перейти к текущему документу в течение той же самой точной секунды, что и HTTP / 404, то неверно обновленное истечение существующей записи кэша приведет к тому, что он будет считаться свежим для этого запроса. Если пользователь нажмет кнопку «Обновить» или «F5», кеш будет обходить, и страница 404 будет показана.

Другими словами, Expires: 0 не всегда приводит к немедленному истечению ресурса, поэтому его следует избегать и Expires: [some valid date in the past] вместо этого следует использовать Expires: [some valid date in the past] .

Истекает: -1 Заголовок Expires указывает, когда содержимое должно считаться устаревшим. Значение -1 указывает, что контент истекает немедленно, и его нужно будет повторно запросить, прежде чем снова отображать его. http://www.httpwatch.com/httpgallery/headers/

max-age = 0 просто сообщает кэшам (и пользовательским агентам), что ответ устарел от get-go, и поэтому они ДОЛЖНЫ повторить проверку ответа (например, с заголовком If-Not-Modified), прежде чем использовать кешированную копию, тогда как no -cache сообщает им, что они ДОЛЖНЫ повторить проверку перед использованием кешированной копии.

для получения дополнительной информации смотрите http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf

Использование «-1» недействительно и будет обрабатываться так же, как «0». Он не должен запускать перезагрузку вообще.

Будьте осторожны: в некоторых браузерах он может дать 1 час дополнительно или использовать время истечения по умолчанию для кэширования.

1- Так лучше дать ему правильную старую дату, например:

    

Для формальной работы я советую дать текущее время времени meta Expires вместо использования старой фиксированной даты (что заставит поисковые системы, такие как Google, пометить ваш сайт как старый и не будет отображаться на верхних страницах)

2- если ваш Backend является PHP, вы можете справиться с ним так:

  

PS: Я даю час раньше, чем на случай.

  • Как я могу программным образом удалить 2 ограничения соединения в WebClient
  • Базовая проверка подлинности HTTP в Node.JS?
  • Http Basic Authentication в Java с использованием HttpClient?
  • Протокол WebSockets vs HTTP
  • Почему API-интерфейсы браузера ограничивают междоменные запросы?
  • Проверьте, существует ли файл на удаленном сервере, используя его URL
  • Является ли HTTP-заголовком Referer отправленным при переходе на страницу http с https-страницы?
  • Angular2 http.post выполняется дважды
  • В чем разница между HTTP_CLIENT_IP и HTTP_X_FORWARDED_FOR?
  • Как я могу обслуживать https и http для Jetty из одного порта?
  • Как установить заголовок Content-Type для запроса HttpClient?
  • Interesting Posts

    Остановка и воспроизведение Android MediaPlayer

    Моя карта данных usb 3g иногда переключается на 2g, но не переключается обратно, не вставляя ее снова и снова.

    Странная ошибка firefox

    Как я могу изменить лицензию на визуальную студию?

    Управление несколькими графическими диаграммами на одной веб-странице

    Как реализовать мой собственный кэш диска с библиотекой picasso – Android?

    Ffmpeg – Создайте видео с кадра изображения с началом и cout

    Как найти индикацию ошибки проверки (required = “true”) при выполнении команды ajax

    Как отправить итоговый результат агрегации кафка-streamов из windows KTable с временным окном?

    Архив файлов Outlook Windows 10

    Android: как интегрировать декодер в мультимедийную инфраструктуру

    Размер огромных объектов, непосредственно выделенных для старого поколения

    strdup () – что он делает в C?

    Не удается удалить надстройку Internet Explorer

    Файл с измененным прослушивателем в Java

    Давайте будем гением компьютера.