Chrome中的"Normal Reload","Hard Reload"和"Empty Cache and Hard Reload"有什么区别?

Sam*_*lle 329 google-chrome browser-cache google-chrome-devtools

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

重新加载选项

我可以弄清楚选项1和选项3之间的区别,并且选项2可能介于两者之间,但我无法在任何地方找到更精确的信息.

有人知道3个选项中每个选项的确切行为吗?

And*_*sen 416

正常重新加载

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


硬重装

发出请求时,请勿在缓存中使用任何内容.(等于SHIFT+ F5无需打开开发者控制台)强制浏览器重新下载每个JavaScript文件,图像,文本文件等.


空缓存和硬重新加载

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


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

  • 有没有人知道第三个选项是否会清空当前站点的缓存,而不是清空*整个*缓存? (45认同)
  • 应该注意的是,如果开发人员工具处于打开状态,这****只会起作用(F12)如果这是一个无论开发工具是否打开都可以随时可用的设置,那将是很好的. (14认同)
  • 我不清楚什么被认为是"通过Javascript事后下载"?有人可以提供具体的例子吗? (12认同)
  • @Grinn:实际上,现在我想起来了,它可能就是整个缓存.该功能的目的是清除事后下载,这不仅限于一个"站点". (10认同)
  • @Costa您可以下载最初未在DOM中指定的内容.例如,通过向DOM添加新的<script>标记,或者使用RequireJS等.任何基于AMD的库(例如RequireJS)基本上都会懒散地加载其脚本.在这种情况下,您必须清空缓存以确保所有内容都得到了重新加载. (4认同)
  • 这似乎不再正确.按F5/Ctrl + R /单击重新加载按钮似乎强制浏览器再次检查资源而不使用缓存.我可以让它实际使用缓存的唯一方法是在链接地址上输入enter (3认同)
  • @Grinn的问题很重要,足以作为自己的问题(如建议的那样)提出,所以我在http://stackoverflow.com/questions/23771569/does-empty-cache-and-hard-reload-empty-整个缓存或只是相关的部分 (2认同)
  • 用户是否可以为第三个选项添加键盘快捷键? (2认同)

dco*_*ing 5

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

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

在此输入图像描述

  • 我做了一些测试...访问 URL 或使用 *Normal Reload* 发送了 3 个与缓存相关的标头:`Cache-Control: max-age=0`、`If-Modified-Since`、`If-None-Match`。然而,执行*硬重载*(无论是否清空缓存),只发送了 2 个与缓存相关的标头:“Cache-Control: no-cache”和“Pragma: no-cache”。所以,是的,浏览器确实发送了一个标头,请求服务器提供新版本;然后由服务器(包括代理)根据此改变行为。 (6认同)