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

我可以弄清楚选项1和选项3之间的区别,并且选项2可能介于两者之间,但我无法在任何地方找到更精确的信息.
有人知道3个选项中每个选项的确切行为吗?
根据这个 API文档,这是我发现的唯一描述内存缓存的源:
Chrome使用两个缓存 - 磁盘缓存和非常快速的内存缓存.内存高速缓存的生命周期附加到呈现过程的生命周期,该过程大致对应于选项卡.从内存缓存中回答的请求对Web请求API是不可见的.如果请求处理程序更改其行为(例如,阻止请求的行为),则简单页面刷新可能不会考虑此更改的行为.要确保行为更改通过,请调用handlerBehaviorChanged()以刷新内存缓存.但是不要经常这样做; 刷新缓存是一项非常昂贵的操作.注册或取消注册事件侦听器后,无需调用handlerBehaviorChanged().
我需要更好地了解内存缓存.具体来说,我需要Chrome每次访问网站时都会生成完整的webRequest /资源瀑布,包括刷新页面.显然,如果它使用内存缓存,则不可能是真的.
当我创建新选项卡时,内存缓存是否为新选项卡的清单?
"非常昂贵的操作"在多大程度上意味着什么?
如果每次在同一个选项卡中重新加载页面时都调用handlerBehaviorChanged(),那么这样可以保证完整的瀑布吗?在这种情况下,10分钟内限制20次似乎相当低.
任何帮助都非常感谢,谢谢!
我有一些不可变的图像资源,可以永久缓存。Chrome 似乎尊重我的响应标头,并且不会重新验证资源:
以下是 Chrome 中这些资源之一的示例。正如你所看到的,我包括cache-control: public, max-age,expires,etag和last-modified和资源从“内存缓存”服务:
但是,Firefox 不尊重这些标头并在每次加载时重新验证资源!每次页面加载时,我的服务器都会收到对每个个人资料图片的请求,并返回 304:
这是导致 304 的此类请求的示例:
我不明白为什么 Firefox 会忽略缓存标头并继续访问 304 的服务器。我已经尝试了各种与缓存相关的标头并阅读了关于什么是"cacheable"的标准。我确保在 devtools 中启用了缓存。我也尝试过关闭 devtools,但我一直在服务器日志中看到 304。
我发现这只会在页面刷新时发生。但是,普通刷新,不是 shift- 或 shift-command-,而只是普通刷新。这不是我期望的行为。