在我正在开发的网站上,我在外部服务器上托管了一些字体。在我的 中<head>,我预加载字体,然后获取包含该@font-face字体的所有规则的样式表。样式表与字体位于同一服务器上。
我遇到的问题是,字体似乎在加载样式表后再次加载,根本没有利用预加载。
我在搜索如何修复此问题时看到一条评论,表明这是一个 Chromium 错误,但这种行为在 Firefox 中也会发生。
在控制台中我看到:
该资源是使用链接预加载来预加载的,但在窗口加载事件发生后的几秒钟内未使用。请确保它具有适当的
as值并且是有意预加载的。
我看到的行为是字体在页面加载后约 1 秒加载,而我的客户对此不满意。如果浏览器使用预加载的字体,则不会发生这种情况。
<link rel="preload" as="font" href="path to SearchlightRegular.woff2" type="font/woff2" crossorigin="anonymous" />
<link rel="preload" as="font" href="path to SearchlightRegular.woff" type="font/woff" crossorigin="anonymous" />
<link rel="stylesheet" href="path to Searchlight.css" />
Run Code Online (Sandbox Code Playgroud)
我尝试将其放在主样式表的上方和下方。我也尝试将 CSS 调用放入我的主样式表中。所有尝试都会产生相同的结果。
以下是 Searchlight.css 文件的内容。
@font-face {
font-family: 'Searchlight';
src: local('Searchlight'), local('SearchlightRegular'),
url('path to SearchlightRegular.woff2') format('woff2'),
url('path to SearchlightRegular.woff') format('woff'),
url('path to SearchlightRegular.ttf') format('truetype');
font-weight: 300;
font-style: normal;
font-display: swap;
}
.font-searchlight {
font-family: 'Searchlight', serif;
}
Run Code Online (Sandbox Code Playgroud)
我想这个问题有一个解决方案,因为我见过可以立即(或非常快)加载字体的网站。在过去 30 分钟的搜索过程中,我没有找到任何对我有用的东西。
小智 6
这可能是因为字体的预加载路径和 css 路径不匹配,因此浏览器会加载该字体两次。
您应该确保预加载和 css 文件中的字体路径相同。只有当您看到网络控制台中每种字体只有一个请求时,您才会知道它正在工作。
我认为预加载中不允许查询参数。如果您有查询参数,请尝试将其删除。
例如错误:
好的:
我希望这有帮助,问候!