我最近在Chrome中发现了这个新功能:

我可以计算出选项1和选项3之间的区别,选项2可能介于两者之间,但我在任何地方都找不到更精确的信息。

有人知道这3个选项的具体行为吗?


当前回答

正常加载

和按F5是一样的。这将使用缓存,但在页面加载期间重新验证所有内容,寻找“304 Not Modified”响应。如果浏览器可以避免重新下载缓存的JavaScript文件、图像、文本文件等,那么它就会这样做。


努力重新加载

发出请求时不要使用缓存中的任何东西。(等于SHIFT+F5无需打开开发人员控制台)强制浏览器重新下载每个JavaScript文件,图像,文本文件等。


空缓存和硬加载

显然,如果缓存是空的,那么它将不得不做一个硬重载。这将再次迫使浏览器重新下载所有内容。但是,如果页面通过JavaScript进行任何事后下载,而这些下载不是页面加载的一部分,那么这些下载可能仍然使用缓存,这就是清空缓存的作用,因为它确保即使这些下载也不会使用缓存文件。


注意:此特性仅在开发人员工具打开时可用。

其他回答

正常加载

和按F5是一样的。这将使用缓存,但在页面加载期间重新验证所有内容,寻找“304 Not Modified”响应。如果浏览器可以避免重新下载缓存的JavaScript文件、图像、文本文件等,那么它就会这样做。


努力重新加载

发出请求时不要使用缓存中的任何东西。(等于SHIFT+F5无需打开开发人员控制台)强制浏览器重新下载每个JavaScript文件,图像,文本文件等。


空缓存和硬加载

显然,如果缓存是空的,那么它将不得不做一个硬重载。这将再次迫使浏览器重新下载所有内容。但是,如果页面通过JavaScript进行任何事后下载,而这些下载不是页面加载的一部分,那么这些下载可能仍然使用缓存,这就是清空缓存的作用,因为它确保即使这些下载也不会使用缓存文件。


注意:此特性仅在开发人员工具打开时可用。

这也适用于Mac OS x。打开开发人员工具,然后按下重载按钮 1. 二次单击(右撇子单击右键),或 2. 长按,也就是长按 看菜单。

除了这个答案之外,硬重载通常会导致代理、内容交付网络和其他远程缓存被刷新。

下面的方法允许您仅为有问题的URL清除缓存。它帮助我当我被困在http到https重定向缓存。

打开Chrome开发工具,在Windows中我使用F12 选中“保存日志”,在重定向前保存日志 右键单击重定向的URL和清除浏览器缓存

这将只清除有问题的缓存而不影响正常缓存。

这里是对规范的参考-当重载被触发时,浏览器执行以下操作之一:

“正常重新加载”执行“特定的端到端重新验证”或“未指定的端到端重新验证”,如HTTP规范所定义的,即使用缓存,但重新验证发生,要么带有缓存验证条件(' Specific '),要么没有(' Unspecified ')。在这两种情况下,由于浏览器将max-age报头设置为0,因此会发生重新验证。

另一方面,“硬加载”似乎会触发“端到端重新加载”——不允许使用缓存副本。在这种情况下,重新加载由浏览器设置Pragma: no-cache强制执行。