“正常重新加载”、“硬重新加载”和“空缓存和硬重新加载”有什么区别?在铬吗?

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

reload options

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

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

102910 次浏览

正常加载

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


努力重新加载

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


空缓存和硬加载

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


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

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

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

enter image description here

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

  1. 打开Chrome开发工具,在Windows中我使用F12
  2. 在重定向之前检查Preserve log以保存日志
  3. 右键单击重定向的URL和Clear browser cache

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

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

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

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