资源 <URL> 已使用链接预加载进行预加载,但在窗口加载事件后几秒钟内未使用

lia*_*bel 20 html css fonts

在我正在开发的网站上,我在外部服务器上托管了一些字体。在我的 中<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 文件中的字体路径相同。只有当您看到网络控制台中每种字体只有一个请求时,您才会知道它正在工作。

我认为预加载中不允许查询参数。如果您有查询参数,请尝试将其删除。

例如错误:

好的:

我希望这有帮助,问候!