网页字体预加载:最佳做法 + 工作原理

目录


右键点我复制链接地址,分享页面有积分。


当谈到网络性能优化时,预加载是你的武器库中一个有用的工具。

预加载使您可以声明浏览器必须请求的特定资源,而不会阻止页面其余部分的呈现。

基本上,它使您可以更好地控制网页上资源的加载方式,从而帮助您优化 WordPress 网站的性能并缩短网站的感知页面加载时间。

在本文中,我们将重点关注预加载的一个特定方面——网络字体预加载。


什么是预加载?

这篇文章中详细介绍了预加载,下面的是快速版本:

当有人访问您的网站时,他们的浏览器会按一定顺序加载该网页上的所有资源,您可以从Chrome 开发人员工具或GTmetrix或WebPageTest等性能测试工具的“网络”选项卡中看到:

font-preloading

默认情况下,Web 浏览器根据网站 HTML 中声明的顺序决定如何加载这些资源,从性能和/或用户体验的角度来看,这并不总是最佳的。

通过预加载,您可以强制浏览器尽早加载某些资源,例如字体。这使您可以更好地控制网站的加载方式,如果实施得当,可以提高网站的性能。


为什么字体预加载很重要?

默认情况下,您的站点将延迟字体请求,直到构建渲染树之后。

本质上,在默认行为下,浏览器将等待加载字体文件,直到它开始将可见内容“绘制”到用户屏幕上。基本上,浏览器会延迟加载字体文件,以便只有在浏览器知道需要该字体时才开始加载特定字体(它知道需要该字体,因为它已经需要使用该字体来“绘制”文本)屏幕)。

但是,这种延迟加载方法可能会导致浏览器已准备好开始显示文本,但由于尚未下载字体,因此浏览器需要延迟绘制文本,直到下载了字体。 

这称为FOIT,或Flash of Invisible Text。或者,它也可能导致FOUT或无样式文本的 Flash。

  • FOIT – 在加载字体文件之前文本是不可见的。
  • FOUT – 文本可见,但使用系统字体。字体文件加载后,文本将切换到新的字体样式,这可能会给访问者带来不和谐的体验,因为文本会出现“跳跃”和“变形”。

总之,如果没有字体预加载,您可能会遇到浏览器已准备好加载网站文本的情况,但由于字体尚不可用而无法加载。也就是说,它需要先下载字体才能绘制文本。

您想要避免这种情况的原因是,它会减慢访问者感知的页面加载时间,从而导致用户体验下降。

通过字体预加载,您可以强制访问者的浏览器尽早加载重要字体,以便浏览器可以在准备好后立即开始绘制文本,而不是等待加载字体。

字体预加载不会告诉浏览器该字体将用于什么用途,它只是说“嘿,立即下载此字体,以便它可以使用”。然后,当浏览器准备好开始绘制文本时,它已经有了可用的字体,并且可以立即开始显示文本。

此外,预加载字体解决了Google PageSpeed Insights 的“预加载关键请求”建议,并帮助您改进累积布局偏移指标和最大内容绘制、两项 核心 Web 生命力。


如何在 WordPress 上预加载字体

虽然有一些插件可以帮助您预加载某些类型的字体(例如 Google Fonts),但预加载字体的手动方法需要向 WordPress 网站的 <head> 部分添加一些代码。

您可以通过多种方式在 WordPress 网站的 <head> 部分插入代码。你可以:

您将使用的代码本身如下:

  • rel – 这告诉浏览器预加载字体文件。
  • href – 这是实际字体文件的链接。您需要对其进行编辑以反映您想要预加载的字体。
  • as – 这告诉浏览器它正在预加载字体文件。
  • type – 这指定字体文件类型。如果您想预加载不同的文件类型,则需要更改它。
  • crossorigin – 这是为了满足字体预加载的一个怪癖,我将在下一节中详细介绍这一点。

您可能想知道WordPress 最好的缓存插件是什么。如果是这样,您可能会在我们的专用页面上找到有用的信息!


字体预加载和优化的最佳实践

下面是正确使用字体预加载的一些最佳做法。

1.限制预加载的字体和格式的数量

如果您使用多种字体,则可能会倾向于预加载每种格式中使用的每种字体。

然而,使用字体预加载会影响性能。

通过预加载,您实际上会强制浏览器对字体 URL 发出高优先级请求,无论是否需要。如果加载不必要的字体,则会不必要地延迟访问者的浏览器加载网站的其余部分。

为了平衡这些权衡,您应该将预加载的字体数量限制为初始页面加载绝对必需的字体(即首屏所需的字体)。

根据您的设计,这可能只是您用于标题的字体。或者,它还可能包括您用于正文的字体。

此外,您还需要限制预加载的格式。例如,仅预加载常规格式,而不预加载斜体或粗体格式。

仅使用斜体文本或粗体文本的 FOUT 就不那么刺耳了,因为这些格式可能只占内容的一小部分。

基本上,您只想预加载会对您网站的首屏体验产生显着影响的字体。

2. 确保您预加载的字体与您的 CSS 匹配

如果您从外部 CDN 服务(例如 Google Fonts 或 Adob​​e Fonts)加载字体,请注意您预加载的字体文件与 CSS 中所需的字体相匹配。

CDN 上的字体可能已更新,这可能会导致您最终预加载与 CSS 中要求的字体版本不同的字体版本。这可能会导致不理想的情况,即您实际上强制访问者的浏览器下载同一字体的两个版本。

为了避免这种情况,如果可能的话,您还可以在本地托管自定义字体。

免费的 OMGF 插件可以帮助您在 WordPress 上本地托管 Google 字体。它还可以自动帮助您仅预加载首屏加载的字体。

3. 确保使用 crossorigin 属性

预加载字体时,即使提取不是 crossorigin ,设置 crossorigin 属性也很重要。您可以在之前的代码示例中看到这一点:

虽然原因很复杂,但最终的结果是浏览器会忽略没有 crossorigin 属性的预加载字体,这将导致浏览器实际上两次获取字体(一次是在预加载期间,另一次是在丢弃预加载字体之后)。

字体预加载是改善 Core Web Vitals 的 SEO 技巧之一。阅读我们的文章并发现所有其他最佳做法!


评论

一条对“网页字体预加载:最佳做法 + 工作原理”的回复

  1. 学习中……

发表回复

必填项已用 * 标注