当前位置:  开发笔记 > 编程语言 > 正文

浏览器"F5"和"Ctrl + F5"刷新生成什么请求?

如何解决《浏览器"F5"和"Ctrl+F5"刷新生成什么请求?》经验,为你挑选了4个好方法。

Web浏览器中的操作F5Ctrl + F5触发器是否有标准?

我曾经在IE6和Firefox 2.x中做过实验.的F5 刷新将触发发送到服务器与HTTP请求If-Modified-Since报头,而Ctrl + F5不会具有这样的标题.在我的理解中,F5 将尝试尽可能多地利用缓存内容,同时Ctrl + F5 旨在放弃所有缓存内容,并再次从服务器中检索所有内容.

但是今天,我注意到在一些最新的浏览器(Chrome,IE8)中它不再以这种方式工作了.双方F5Ctrl + F5发送If-Modified-Since头.

那么这应该如何工作,或者(如果没有标准)主要浏览器如何实现这些刷新功能?



1> some..:

这取决于浏览器,但它们的行为方式类似.

我测试过FF,IE7,Opera和Chrome.

F5通常只有在修改页面时才更新页面.浏览器通常会尝试尽可能多地使用所有类型的缓存,并在请求中添加"If-modified-since"标头.Opera通过发送"Cache-Control:no-cache"而不同.

CTRL- F5用于强制更新,忽略任何缓存.IE7增加了一个"Cache-Control:no-cache",FF也增加了"Pragma:no-cache".Chrome执行正常的"If-modified-since"并且Opera忽略了密钥.

如果我没记错的话,Netscape是第一个通过在按下时添加"Pragma:No-cache"来添加对缓存控制的支持的浏览器CTRL- F5.

编辑:更新的表格

下表更新了有关单击浏览器刷新按钮(Joel Coehoorn请求后)和"max-age = 0"Cache-control-header 时会发生什么的信息.

更新的表格,2010年9月27日

??????????????????????????????????????????????????????????????
?  UPDATED   ?                Firefox 3.x                    ?
?27 SEP 2010 ?  ??????????????????????????????????????????????
?            ?  ?             MSIE 8, 7                      ?
? Version 3  ?  ?  ???????????????????????????????????????????
?            ?  ?  ?          Chrome 6.0                     ?
?            ?  ?  ?  ????????????????????????????????????????
?            ?  ?  ?  ?       Chrome 1.0                     ?
?            ?  ?  ?  ?  ?????????????????????????????????????
?            ?  ?  ?  ?  ?    Opera 10, 9                    ?
?            ?  ?  ?  ?  ?  ??????????????????????????????????
?            ?  ?  ?  ?  ?  ?                                ?
??????????????????????????????????????????????????????????????
?          F5?IM?I ?IM?IM?C ?                                ?
?    SHIFT-F5?- ?- ?CP?IM?- ? Legend:                        ?
?     CTRL-F5?CP?C ?CP?IM?- ? I = "If-Modified-Since"        ?
?      ALT-F5?- ?- ?- ?- ?*2? P = "Pragma: No-cache"         ?
?    ALTGR-F5?- ?I ?- ?- ?- ? C = "Cache-Control: no-cache"  ?
????????????????????????????? M = "Cache-Control: max-age=0" ?
?      CTRL-R?IM?I ?IM?IM?C ? - = ignored                    ?
?CTRL-SHIFT-R?CP?- ?CP?- ?- ?                                ?
?????????????????????????????                                ?
?       Click?IM?I ?IM?IM?C ? With 'click' I refer to a      ?
? Shift-Click?CP?I ?CP?IM?C ? mouse click on the browsers    ?
?  Ctrl-Click?*1?C ?CP?IM?C ? refresh-icon.                  ?
?   Alt-Click?IM?I ?IM?IM?C ?                                ?
? AltGr-Click?IM?I ?- ?IM?- ?                                ?
??????????????????????????????????????????????????????????????

测试版本:

Firefox 3.1.6和3.0.6(WINXP)

MSIE 8.0.6001和7.0.5730.11(WINXP)

Chrome 6.0.472.63和1.0.151.48(WINXP)

Opera 10.62和9.61(WINXP)

笔记:

    版本3.0.6发送I和C,但3.1.6在新选项卡中打开页面,仅使用"I"发出正常请求.

    版本10.62什么都不做.9.61可能会做C,除非它是我旧桌子上的拼写错误.

关于Chrome 6.0.472的注意事项:如果您执行强制重新加载(例如CTRL- F5),它的行为类似于内部标记的url始终执行强制重新加载.如果您转到地址栏并按Enter键,该标志将被清除.


@John Topley:不允许使用表格,所以答案是否定的.
仅供参考 - 实际上在Chrome开发/错误跟踪板上引用了这个答案:http://code.google.com/p/chromium/issues/detail?id = 1906
你不能把它作为一个合适的HTML表吗?
@Joel Coehoorn:点击刷新按钮更新了表格.得爱ASCII图形表,不是吗?颜色编码只是代码颜色编码的副作用.

2> dancavallaro..:

一般来说:

F5即使内容被更改,也可能会为您提供相同的页面,因为它可能会从缓存中加载页面.但是Ctrl- F5强制缓存刷新,并保证如果内容发生更改,您将获得新内容.


这是准确的,但请注意,虽然Ctrl + F5将导致浏览器抛出缓存并从服务器请求新的,服务器可能会忽略no-cache标头并提供服务器端缓存页面.因此,如果服务器忽略no-cache标头,甚至Ctrl + F5也可能返回旧版本的页面.

3> Pavel Podlip..:

我已经实现了跨浏览器兼容的页面来测试浏览器的刷新行为并获得类似于@some的结果,但对于现代浏览器:

在此输入图像描述



4> mermshaus..:

至少在Firefox(v3.5)中,缓存似乎被禁用而不是简单地清除.如果页面上有多个相同图像的实例,则会多次传输.对于img随后通过Ajax/JavaScript添加的标记也是如此.

因此,如果您想知道为什么浏览器会在您的自动刷新Ajax网站上继续下载相同的小图标几百次,那是因为您最初使用CTRL- 来加载页面F5.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有