Google chrome 什么';这两者之间的区别是什么;“正常重新加载”&引用;“硬重新加载”;,及;“空缓存和硬重新加载”;镀铬的?

Google chrome 什么';这两者之间的区别是什么;“正常重新加载”&引用;“硬重新加载”;,及;“空缓存和硬重新加载”;镀铬的?,google-chrome,google-chrome-devtools,browser-cache,Google Chrome,Google Chrome Devtools,Browser Cache,我最近在Chrome中发现了这个新功能: 我可以找出选项1和选项3之间的区别,选项2可能介于两者之间,但我在任何地方都找不到更精确的信息 有人知道这3个选项的精确行为吗?正常重新加载 与按F5相同。这将使用缓存,但在页面加载期间重新验证所有内容,查找“304未修改”响应。如果浏览器可以避免重新下载缓存的JavaScript文件、图像、文本文件等,那么它会 硬装 发出请求时不要使用缓存中的任何内容。(相当于SHIFT+F5,无需打开开发者控制台)强制浏览器重新下载每个JavaScript文件、

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

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

有人知道这3个选项的精确行为吗?

正常重新加载 与按F5相同。这将使用缓存,但在页面加载期间重新验证所有内容,查找“304未修改”响应。如果浏览器可以避免重新下载缓存的JavaScript文件、图像、文本文件等,那么它会


硬装 发出请求时不要使用缓存中的任何内容。(相当于SHIFT+F5,无需打开开发者控制台)强制浏览器重新下载每个JavaScript文件、图像、文本文件等


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



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

这也适用于Mac OS X。打开开发人员工具,然后在“重新加载”按钮上 1.二次单击(右键单击表示右手鼠标),或 2.长按,又名长按 来看看菜单

此外,硬重新加载通常会导致代理、内容交付网络和其他远程缓存刷新


以下方法允许您仅为出现问题的URL清除缓存。当我陷入http到https重定向缓存时,它帮助了我

  • 打开Chrome开发者工具,在Windows中我使用
    F12
  • 选中
    Preserve log
    以在重定向前保存日志
  • 右键单击重定向的URL并清除浏览器缓存

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

    以下是对规范的引用-触发重新加载时,浏览器将执行以下操作之一:

    “正常重新加载”执行“特定的端到端重新验证”或“未指定的端到端重新验证”,如定义所示,即使用缓存,但使用缓存验证条件(“特定”)或无(“未指定”)进行重新验证。在这两种情况下,都会发生重新验证,因为浏览器将
    max age
    标题设置为0


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

    强制的。您能解释一下“此功能”吗?具体来说:您如何访问它?我尝试了各种右键点击,控制点击。。。但是没能得到它。这是什么版本?@JoachimSauer哈哈,这是我的小秘密。。。说真的,它隐藏得非常好:当开发者控制台处于活动状态时,你必须按下刷新按钮而不立即释放它。右键单击重新加载图标(Devtools处于打开状态)也会显示刷新按钮。这对OSX Chrome有效吗?我似乎无法通过开发工具打开它,右键单击/单击+保持我只是在2016年偶然发现了这些功能…有人知道第三个选项是否只是清空当前站点的缓存,而不是清空整个缓存吗?@Grinn:事实上,现在我想起来了,它可能是整个缓存。该功能的要点是清除事后下载,而不是仅限于一个“站点”。我不清楚什么是通过Javascript进行事后下载“?有人能提供一个具体的例子吗?@Costa您可以下载DOM中最初未指定的内容。例如,通过向DOM中添加新标记,或使用RequireJS等。任何基于AMD的库(如RequireJS)基本上都会延迟加载其脚本。在这种情况下,您必须清空缓存,以确保所有内容都得到硬重新加载。应该注意的是,这仅在开发人员工具打开时才有效(F12)。如果这是一个无论开发人员工具是否打开都可以始终可用的设置,那就太好了。硬重新加载通常会导致代理、内容交付网络和其他远程缓存被刷新→ 你能备份它吗?你有没有任何引文解释为什么会出现这种情况?我希望硬重新加载只会重新加载所有本地缓存,对远程服务器没有额外影响。我认为浏览器会发送一个
    缓存控制:no cache
    头。你有吗?我做了一些测试…转到URL或使用正常的重新加载发送3个与缓存相关的头:
    缓存控制:最大年龄=0
    如果自
    起修改,如果不匹配,则
    。但是,执行硬重新加载(有或没有清空缓存),只发送了2个与缓存相关的头:
    缓存控制:无缓存
    Pragma:no cache
    。因此,是的,浏览器确实发送了一个头,要求服务器提供新版本;然后由服务器(包括代理)决定基于此改变行为。太好了!你可以将其编辑到我的答案中,或者写下你自己的答案。@DenilsonSáMaia