首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字体显示‘可选’:磁盘缓存字体不适用

字体显示‘可选’:磁盘缓存字体不适用
EN

Stack Overflow用户
提问于 2022-03-25 09:48:48
回答 3查看 429关注 0票数 2

在我们的网站中,我们使用外部Google字体:

代码语言:javascript
运行
复制
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<link href="https://fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;700&display=optional" rel="stylesheet">

因此,它返回如下CSS:

代码语言:javascript
运行
复制
@font-face {
  font-family: 'Rubik';
  font-style: normal;
  font-weight: 300;
  font-display: optional;
  src: url(https://fonts.gstatic.com/s/rubik/v19/iJWKBXyIfDnIV7nMrXyi0A.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
...

当新用户第一次来到站点时,字体永远不会适用--这是我可以接受的,因为这是使用font-display: 'optional'的缺点之一。另外,我可以确认来自Google的CSS文件和字体仍然被浏览器加载并被缓存(它们只是不适用于第一次页面访问)。CSS文件缓存24小时,字体文件本身缓存1年。如果我重新加载相同的页面(Ctrl+R),则应用字体。到目前为止一切顺利。

但问题是,如果我在新Chrome选项卡(即新会话)中打开相同的页面,那么字体就不再适用了。我检查了DevTools的Network选项卡,可以确认字体是从磁盘缓存加载的。由于字体是从缓存加载的,所以我预计每次都会应用字体,直到缓存时间结束--但这是不可能的。只有当我刷新相同的Chrome选项卡时,字体才会被应用。新的会话(新选项卡)给了我没有字体的页面。

我理解了一件事:如果我做简单的页面重新加载(Ctrl+R),那么我看到字体是从内存缓存加载的,并且字体是应用的。但是新的会话(新选项卡)将导致字体从磁盘缓存加载--这可能就是它们不应用的原因。在我的开发人员机器上,我有相当快的M2 SSD磁盘,所以磁盘缓存字体不适用的原因有点奇怪。

还有一件事值得提及--我的总阻塞时间分数(CoreWebVentialTTB度量)非常糟糕。这是否是磁盘缓存字体不适用的原因?

有什么办法解决这个问题吗?

谢谢。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71614947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档