为什么Chrome缓存请求需要时间?

8
尽管Chrome在网络选项卡中缓存静态文件(JS、图像等),但是这些文件仍然需要一些时间,如下图所示。enter image description here 许多缓存文件加载只需0毫秒。请问为什么即使从缓存加载文件,它们也需要> 0毫秒才能加载?

请查看此链接:https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=zh-cnhttps://dev59.com/rXA75IYBdhLWcg3wPmd8 - Codeone
2个回答

5
乍一看,即使资源来自缓存,Chrome花费时间下载资源似乎很奇怪。你看到的不是从Web服务器下载所花费的时间。相反,我认为这是从本地数据库缓存中下载所花费的时间。
检索任何数据都需要一定的成本。资源基本上存储在Chrome的数据库中,检索数据需要进行查找,这并不是瞬间完成的。除了在表格中查找数据之外,可能还需要一些处理才能将正确的数据推入内存中,因为数据的存储方式并不完全符合使用方式。它可能被压缩,而解压数据可能是一个缓慢的过程。
您可以在“网络”选项卡中看到,尽管检索某些资源似乎需要0毫秒,但当您查看“时间轴”选项卡时,您会发现它实际上是四舍五入的。例如,在下面的请求中,我看到0.08毫秒停滞和0.02毫秒下载,尽管在网格中显示为0毫秒。

Not instant

更新:

我进一步研究了这个问题,发现Chrome扩展程序似乎会影响从缓存和网页中检索数据的时间,尤其是那些向页面注入内容的扩展程序。对于我来说,Adblock似乎是导致某些延迟的原因 - 上面的解释仍然适用于其他情况。


感谢你详细的解释,Gideon。 - Sriks
1
对我来说,如果我从悉尼到阿姆斯特丹的服务器,或者从我的 CPU 到内存大约 7 厘米,我的 TTFB 是 280 毫秒。如果这是真的,那么这个世界确实是一个奇怪的地方。 - David Gilbertson
@DavidGilbertson 是的,从数据库/处理器检索无法说明这个时间级别。你有没有尝试禁用所有扩展程序来运行? - Gideon Pyzer
是的,这些统计数据来自没有扩展的Chrome Canary。有趣的是,缓存资产方面,例如github(具有长的TTFB)和stackoverflow(具有非常短的TTFB)之间的差异。 - David Gilbertson

0

奇怪的是,Chrome中的时间有点...古怪...这个时间不仅仅是网络时间。如果JS引擎被阻塞了,它也会被包括在总时间内...

enter image description here

如果你遇到了这个问题,请前往“时间轴”选项卡并记录完整的时间轴。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接