我最近在Chrome中发现了这个新功能:
我可以计算出选项1和选项3之间的区别,选项2可能介于两者之间,但我在任何地方都找不到更精确的信息。
有人知道这3个选项的具体行为吗?
这和按F5是一样的。这将使用缓存,但在页面加载期间重新验证所有内容,寻找“304 Not Modified"响应。如果浏览器可以避免重新下载缓存的JavaScript文件、图像、文本文件等,那么它就会这样做。
发出请求时不要使用缓存中的任何东西。(等于转变+F5无需打开开发人员控制台)强制浏览器重新下载每个JavaScript文件,图像,文本文件等。
显然,如果缓存是空的,那么它将不得不做一个硬重载。这将再次迫使浏览器重新下载所有内容。但是,如果页面通过JavaScript进行任何事后下载,而这些下载不是页面加载的一部分,那么这些下载可能仍然使用缓存,这就是清空缓存的作用,因为它确保即使这些下载也不会使用缓存文件。
请注意:此特性仅在开发人员工具打开时可用。
除了这个答案之外,硬重载通常会导致代理、内容传递网络和其他远程缓存被刷新。
下面的方法允许您仅为有问题的URL清除缓存。它帮助我当我被困在http到https重定向缓存。
F12
Preserve log
Clear browser cache
这将只清除有问题的缓存而不影响正常缓存。
这里是对规范的参考-当重载被触发时,浏览器执行以下操作之一:
“正常重新加载”执行“特定的端到端重新验证”或“未指定的端到端重新验证”,由HTTP规范定义,即使用缓存,但重新验证发生,要么有缓存验证条件(' Specific '),要么没有缓存验证条件(' Unspecified ')。在这两种情况下,重新验证发生,因为max-age报头被浏览器设置为0。
max-age
另一方面,“硬加载”似乎会触发“端到端重新加载”——不允许使用缓存副本。在这种情况下,重新加载由浏览器设置Pragma: no-cache强制执行。
Pragma: no-cache