这是我的示例代码:
<body>
<link rel="preload" href="/fonts/Roboto-Regular.woff2" as="font" />
<style>
@font-face {
font-family: "Roboto";
src: url("/fonts/Roboto-Regular.woff2") format("woff2");
}
* {
font-family: "Roboto", sans-serif;
}
</style>
<section>
<h2>Hello World</h2>
</section>
</body>
期望:
Roboto-Regular.woff2
应只被下载一次。第二次访问应在<5ms内完成,因为它是从缓存中读取的。
实际情况:
Roboto-Regular.woff2
被完全下载了两次。第二次访问所需时间与第一次相同。
这里的蓝色条是 Content Download
。
我尝试过的方法:
在这里提出的解决方案:preloaded images get loaded again。但我很快意识到我的问题与缓存无关。如下图所示,在文件的响应标头中已经配置了服务器端的缓存控制:
上一个瀑布截图是在强制刷新 (ctrl F5) 后截取的;这个是在软刷新后截取的:
这次两个请求都只是从缓存中获取它们的响应,这表明缓存与整个情况无关。
那么问题出在哪里呢?
我的环境:
Windows 10 Pro N 1909
Google Chrome 78.0.3904.108 x64