Ken*_*and 6 php firefox caching
我知道可以在我的 Firefox 副本中禁用 RCWN,但我试图找到服务器端是否有办法告诉世界上所有的 Firefox 不要对特定资源使用 RCWN?
我们的应用程序使用云文件存储,我们需要支付网络流量费用。我们已经将服务器配置为发送适当的缓存标头,以便浏览器仅下载图像(可能非常大)一次,然后从缓存加载它们,这样当有人重新加载特定页面时,我们就不会一遍又一遍地收费在我们的网站上。
这在 Chrome 中效果很好,但 Firefox 有一个名为 Race Cache With Network 的功能。RCWN 允许 Firefox 尝试从缓存加载,但同时从网络加载,然后谁先完成就是胜利者。但这意味着每个使用 FF 的用户都将不断地重新下载这些大图像,即使它们已被缓存,这意味着我们必须为网络流量付费,即使他们拥有完美的图像缓存。
我假设缓存可以比网络更快地加载 22MB png 文件,但 FF 检查员表示在比赛期间加载仍然需要 8 秒,并且网络下载获胜。即使网络下载丢失到缓存,它仍然会下载大部分或全部图像。
我们是否可以添加任何 http 响应标头来告诉 FF 不要对某些资源使用 RCWN?
这是我们现在发回的标头示例:
Content-Type: image/png
Expires: Sat, 06 Jul 2030 21:06:51 GMT
Last-Modified: Tue, 07 Jul 2020 05:21:42 GMT
Pragma: cache
Cache-Control: max-age=315360000, private
Content-Disposition: inline; filename="bob-woodward-book-trade-deficits-lodestar.png"
Run Code Online (Sandbox Code Playgroud)
理想情况下,Firefox 开发人员会过来为我们所有人提供一个真正明确的答案。与此同时,经过一番挖掘并浏览了一些源代码后,我很确定答案是“不”。(我想这并不是很令人惊讶,但也许有点令人失望。)
除了源代码之外,到处都可以找到有用的信息,包括 2017 年的这些幻灯片,它们解释了创建 RCWN 的动机:https ://slides.com/valentingosu/race-cache-with-network-2017
(PS:我自己深入研究这个问题的动机与我几天前提出的问题有关。从迄今为止我所看到的一切中,我初步得出的结论是,Firefox 中的缓存系统存在一些相当基本的性能问题。它可能是当然很难比当前代码做得更好!)