Использование кнопки «Назад»: IE и Safari не читают из кеша, тогда как Firefox и Chrome делают - PullRequest
2 голосов
/ 11 июля 2011

Я бы хотел избежать запроса GET, когда пользователь уходит со страницы и возвращается к ней при использовании кнопки «Назад».Это прекрасно работает без какой-либо специальной обработки в Firefox и Chrome (последние версии).

Однако Safari и IE выполняют запрос GET при использовании кнопки «Назад» для возврата на предыдущую страницу.

Я возился с заголовками, которые безуспешно контролировали поведение кэширования (Last-Modified, Expires, Cache-Control).Любые предложения, как можно остановить IE и Safari от перезагрузки страницы при использовании кнопки «Назад»?

Вот типичный заголовок запроса и ответа, которые идентичны в IE и Safari при использовании кнопки «Назад» при перезагрузке страницы.или введите URL в адресной строке.

Заголовки запроса

Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding:gzip, deflate
Accept-Language:en-US
Origin:http://165.88.162.245:8000
Referer:http://165.88.162.245:8000/login?next=/
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1

Заголовки ответа

Content-Language:en
Content-Type:text/html; charset=utf-8
Date:Tue, 12 Jul 2011 11:35:31 GMT
Server:WSGIServer/0.1 Python/2.6.6
Set-Cookie:sessionid=0675e1246fe03946c54d2052e7adf0c9; Path=/
Vary:Accept-Language, Cookie

Ответы [ 2 ]

4 голосов
/ 11 июля 2011

Какие версии IE конкретно?Каковы точные заголовки ответа HTTP:

IE9 и более ранние версии не будут кэшировать страницу с заголовком «без кэширования».Для IE10 и более поздних версий кэшированный ответ будет условно проверен или извлечен из кэша без проверки в случае навигации назад / вперед (см. http://blogs.msdn.com/b/ieinternals/archive/2012/08/01/internet-explorer-10-network-performance-improvements-first-available-pre-resolve-pre-connect-caching.aspx)

IE9 исправил ряд проблем в этой области; пожалуйста, прочтитеhttp://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx для получения дополнительной информации.

0 голосов
/ 12 июля 2011

Проблема для IE заключалась в записи заголовка Vary. В частности, запись Cookie, которая запрещает кэширование в IE. Благодаря записи в блоге, упомянутой Эриком, я смог определить проблему.

К сожалению, это не решает проблему в Safari. В конце концов я остановился на другом подходе, который кажется намного лучше. Причина, по которой перезагрузка беспокоила меня, заключалась в том, что я использовал ее для предоставления доступа к состоянию сеанса, которое было оставлено при переходе от страницы. Решение состоит не в том, чтобы полагаться на клиентский кеш для обеспечения этой функциональности, а в том, чтобы предоставлять URL-адреса, которые выполняют задачу перезагрузки состояния сеанса независимо от клиентского кеширования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...