我理解Ctrl+ Refresh 会从浏览器获取最新内容,而无需读取缓存。那么Ctrl+ Shift+ Refresh 是用来做什么的呢?
Ctrl+ 刷新请求头如下:
Cache-Control : max-age=0
为Ctrl++Shift刷新
Pragma : no-cache <br>
Cache-Control : no-cache
真正的区别是什么?
答案1
两者与本地计算机上的浏览器完全相同。您提到的标头是唯一的区别。
Ctrl+Refresh 标头意味着沿途的任何缓存服务器都应返回页面的最新副本。
Ctrl+Shift+Refresh 标头意味着沿途的任何缓存服务器都应返回页面的全新副本,并且不应为任何未来请求缓存该页面。换句话说,下次请求该页面时,它应该使用页面的先前缓存或请求全新副本,但不应使用当前副本。
Pragma: no-cache 是 Cache-Control: no-cache 的 HTTP 1.0 版本。没有与 Cache-Control: max-age=0 等效的 HTTP 1.0 版本。
RFC2616第14节第9小节有相关信息:w3c.org:RFC2616 第 14.9.1 节
答案2
还有一个区别,而且是一个很大的区别。
当您按下 Ctrl+Refresh 时,对于每个带有Last-Modified
或标头的缓存对象,浏览器将发出带有或标头的ETag
请求。然后,服务器可以选择使用 , 进行响应,而不重新发送任何数据(假设数据实际上未被修改)。If-Modified-Since
If-None-Match
304 Not Modified
当您按下 Ctrl+Shift+Refresh 时,浏览器将不会发出此类条件If-*
标头,服务器别无选择,只能再次发送数据。