当用户离开页面并使用浏览器的后退按钮返回该页面时,我希望避免 GET 请求。在 Firefox 和 Chrome(最新版本)中无需任何特殊处理即可正常工作。
但是,Safari 和 IE 在使用后退按钮返回上一页时都会执行 GET 请求。
我摆弄了控制缓存行为的 header (Last-Modified、Expires、Cache-Control),但没有成功。有什么建议可以阻止 IE 和 Safari 在使用后退按钮时重新加载页面吗?
这是一个典型的请求和响应 header ,在 IE 和 Safari 中使用后退按钮、重新加载页面或在地址栏中输入 URL 时,它们是相同的。
请求 header
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
响应 header
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
最佳答案
具体是哪些版本的 IE?确切的 HTTP 响应 header 是什么?
IE9 及更早版本不会缓存带有“无缓存” header 的页面。对于 IE10 及更高版本,在后退/前进导航的情况下,将有条件地验证缓存的响应或从缓存中提取缓存的响应而不进行验证(请参阅 IEInternals )
IE9修复了这方面的一些问题;请阅读此IEInternals post了解更多信息。
关于internet-explorer - 使用后退按钮: IE and Safari not reading from cache whereas Firefox and Chrome do,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6652711/