这取决于浏览器,但是它们的行为类似。
我已经测试了FF,IE7,Opera和Chrome。
F5通常仅在页面被修改的情况下更新页面。浏览器通常尝试尽可能多地使用所有类型的缓存,并在请求中添加“ If-modified-since”标头。Opera通过发送“缓存控件:无缓存”来进行区别。
CTRL- F5用于强制更新,而不考虑任何缓存。IE7和FF一样,添加了“ Cache-Control:no-cache”,后者还添加了“ Pragma:no-cache”。Chrome会执行正常的“ If-modified-since”,而Opera会忽略该键。
如果我没有记错的话,那是Netscape,它是第一个通过按CTRL- 来添加“ Pragma:No-cache”来增加对缓存控制的支持的浏览器F5。
编辑:更新表
下表更新了有关单击浏览器的刷新按钮(在Joel Coehoorn请求之后)和“ max-age = 0”高速缓存控制标头的信息。
更新后的表格,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,则清除该标志。