在10中,如果按后退按钮,它将尝试从浏览器缓存中获取上一页。这种行为与几乎所有其他浏览器(包括IE9 )不同,在浏览器中,按后退按钮将完成对前一页的完全重新加载,而不是重用缓存。
如何从网站与IE10进行通信,可能会使用javascript/headers等来实现站点的全局缓存利用率?
(注意:我不需要一个IE10设置来禁用它。我正在寻找一个解决方案,可以实现在网站,而不是浏览器指示IE10不要使用这个缓存的后退按钮)。另外,我正在寻找一个全局解决方案,它适用于网站中的每一个页面.
我使用PHP/Jquery作为站点
这里有更多的信息
该页是一个表单。它包含一些动态加载的信息。(假设它包含用户提交表单的次数)
单击表单的“提交”按钮。然后,您将被重定向到表单的操作页。
然后按后退按钮。
在每个其他浏览器中,它都会重新加载初始表单,其中包含新更新的“用户提交表单的次数”。然而,在IE10中,这不是happen....How --我让它发生在IE10中吗?
下面是一些示例头:
1.当您第一次加载表单时:
请求标头
Key Value
Request GET /path/to/my/page HTTP/1.1
Accept text/html, application/xhtml+xml, */*
Accept-Language en-US
User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Accept-Encoding gzip, deflate
Host myhost.com
If-Modified-Since Tue, 10 Sep 2013 23:55:33 GMT
If-None-Match "1378857333"
DNT 1
Connection Keep-Alive
Cookie __utma=104299925.1011127538.1340896287.1364829735.1378764406.12; __utmz=104299925.1340896287.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); has_js=1; __utmc=104299925; __qca=P0-1247924781-1340896285157; _mkto_trk=id:601-CPX-764&token:_mch-sadfsadfze.com-1358808312889-73607; __utma=171146939.775168663.1343066079.1375907514.1378762647.41; __utmz=171146939.1343066079.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s_stats_browser_info=%7B%22pluginInfo%22%3A%7B%22pdf%22%3A%5B%22pdf%22%2C%22application/pdf%22%2C%220%22%5D%2C%22quicktime%22%3A%5B%22qt%22%2C%22video/quicktime%22%2C%220%22%5D%2C%22realplayer%22%3A%5B%22realp%22%2C%22audio/x-pn-realaudio-plugin%22%2C%220%22%5D%2C%22wma%22%3A%5B%22wma%22%2C%22application/x-mplayer2%22%2C%220%22%5D%2C%22director%22%3A%5B%22dir%22%2C%22application/x-director%22%2C%220%22%5D%2C%22flash%22%3A%5B%22fla%22%2C%22application/x-shockwave-flash%22%2C%220%22%5D%2C%22java%22%3A%5B%22java%22%2C%22application/x-java-vm%22%2C%221%22%5D%2C%22gears%22%3A%5B%22gears%22%2C%22application/x-googlegears%22%2C%220%22%5D%2C%22silverlight%22%3A%5B%22ag%22%2C%22application/x-silverlight%22%2C%220%22%5D%7D%2C%22res%22%3A%221920x1080%22%7D; _pk_id.2.1644=19232922ec6753dc.1371502517.1.1371502630.1371502517.; SESS569093948b0206b05eb2212616da3db6=1977iogjr841af2s8l4sd1cjd0; XDEBUG_SESSION=12250; has_js=1; __utmc=171146939响应头:
> Key Value Response HTTP/1.1 200 OK Date Tue, 10 Sep 2013 23:55:44 GMT
> Server Apache/2.2.20 (Ubuntu) X-Powered-By PHP/5.4.15-1~tooptee10+1
> Last-Modified Tue, 10 Sep 2013 23:55:44 +0000 Cache-Control no-cache,
> must-revalidate, post-check=0, pre-check=0 ETag "1378857344"
> Keep-Alive timeout=15, max=9987 Connection Keep-Alive
> Content-Type text/html; charset=utf-82.当你按“后退”按钮回到那个表格时
请求标头
> Key Value
> Request GET /path/to/my/page HTTP/1.1
> Accept text/html, application/xhtml+xml, */*
> Accept-Language en-US
> User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
> Accept-Encoding gzip, deflate
> Host myhost.com响应标头
> Key Value Response HTTP/1.1 304 Not Modified
> X-Powered-By PHP/5.4.15-1~tooptee10+1 ETag "1378857344"
> Keep-Alive timeout=15, max=9987 Content-Type text/html; charset=utf-8
> Content-Length 117183 Expires Tue, 10 Sep 2013 22:55:36 GMT
> Last-Modified Tue, 10 Sep 2013 23:55:44 GMT注意,它最终返回一个304。当我在Firefox中尝试这一点时,当您按后退按钮时,它会返回200。
发布于 2013-09-11 00:40:48
我认为你想要的行为打破了用户对后退按钮的期望。
用户期望当他们按回时,它会将他们返回到他们以前正在查看的页面,返回到他们离开时所处的状态。大多数现代浏览器不仅缓存页面,而且将页面状态(包括Javascript上下文)保留在内存中,这样当通过back按钮返回页面时,页面状态就会保持以前的状态,包括任何写入表单或与之交互的Javascript的内容。
在大多数浏览器中,您可以通过设置Cache-Control头(如no-cache和no-store )强制覆盖。我不知道no-store在您的情况下是否适用于IE10,或者IE10是否忽略了这一点,只是返回到页面。如果是的话,我不认为我会责怪它。它这样做是为了用户的利益,既快速,并返回到页面,因为它是当它被查看。
我认为我采取的方法,你不必同意我的观点,就是重新考虑设计。如果你不打算向用户展示他们在回去时看到的东西,你为什么要要求用户回击呢?如果您想要显示一个更新的表单,为什么不将邮政后重定向返回到表单,它将被算作一个新的页面加载并尊重您的Cache-Control头呢?这就是我要做的,它已经成为了一个事实上的标准。
tl;博士--这是可能的,但我不确定,你是否可以用no-store做你想做的事,但我会考虑搬到邮政后重定向,这样除了回到以前的状态之外,不要依赖后退按钮。
发布于 2013-09-09 21:49:47
您可以在PHP中设置一些标头
Cache-Control: private, must-revalidate, max-age=0
Expires: Thu, 01 Jan 1970 00:00:00https://stackoverflow.com/questions/18707547
复制相似问题