前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谷歌PageSpeed提示利用font-display控制网页字体可见性的加载和替换

谷歌PageSpeed提示利用font-display控制网页字体可见性的加载和替换

作者头像
李洋博客
发布2023-03-03 15:56:22
1.4K0
发布2023-03-03 15:56:22
举报
文章被收录于专栏:李洋博客

新主题搭建完成了,可能时间上可以充裕一些,在整理模板优化性能的时候,看到谷歌 PageSpeed Insights 的诊断结果经常会有一项目:确保文本在网页字体加载期间保持可见状态,解释就是说利用 font-display 这项 CSS 功能,确保文本在网页字体加载期间始终对用户可见。在介绍 font-display 之前,先了解一下什么是 Web Fonts。

Web Fonts

以前使用 CSS 指定字体时只能使用用户电脑本地上现有的字体,而由于每个用户电脑上的字体可能都不一样,所以能用的基本上就是操作系统内置的一些字体,例如微软雅黑,宋体,苹果苹方,这些也叫做安全字体(Web Safe Fonts)。为了使字体显示正常,我们一般会通过 font-family 属性同时指定多个字体,如果第一个字体没有在操作系统中找到,就会使用下一个后备字体( Fallback Font ),以此类推。

再后来CSS 开始支持 @font-face 这个指令,可以加载自定义的字体文件,这个时候可以把字体随网站一起发布,用户在浏览网站的时候,会下载 @font-face 中指定的字体。

font-display 介绍

确切的说“font-display”不属于 CSS 属性,而是专用于 @font-face 指令的描述符,它可以取如下几个值:

  • auto 。这个是 font-display 的默认值,字体的加载过程由浏览器自行决定,不过基本上和取值为 block 时的处理方式一致。
  • block 。在字体加载前,会使用备用字体渲染,但是显示为空白,使得它一直处于阻塞期,当字体加载完成之后,进入交换期,用下载下来的字体进行文本渲染。不过有些浏览器并不会无限的处于阻塞期,会有超时限制,一般在 3 秒后,如果阻塞期仍然没有加载完字体,那么直接就进入交换期,显示后备字体(而非空白),等字体下载完成之后直接替换。
  • swap 。基本上没有阻塞期,直接进入交换期,使用后备字体渲染文本,等用到的字体加载完成之后替换掉后备字体。
  • fallback 。阻塞期很短(大约100毫秒),也就是说会有大约 100 毫秒的显示空白的后备字体,然后交换期也有时限(大约 3 秒),在这段时间内如果字体加载成功了就会替换成该字体,如果没有加载成功那么后续会一直使用后备字体渲染文本。
  • optional 。与 fallback 的阻塞期一致,但是没有交换期,如果在阻塞期的 100 毫秒内字体加载完成,那么会使用该字体,否则直接使用后备字体。这个就是说指定的网络字体是可有可无的,如果加载很快那么可以显示,加载稍微慢一点就不会显示了,适合网络情况不好的时候,例如移动网络。

那么在了解 font-display 之后,那么我们应该不难看出来,对于大部分情况应该把它的值设置为 swap ,这样在加载网络字体期间,使用后备字体进行渲染,加载完成之后在替换为指定的网络字体。

优化代码:

优化前:

代码语言:javascript
复制
@font-face {
  font-family: "icon";
}

优化后:

代码语言:javascript
复制
@font-face {
  font-family: "icon";
  font-display: swap;
}

其中“font-family”后面根据实际情况设置,可以奥森或者阿里图标再或者一些特效等等。另外“font-display”是用于指定字体显示策略的 API,而“swap”告诉浏览器使用该字体的文本应立即使用系统字体显示。自定义字体准备就绪后,系统字体将被换出。如果浏览器不支持font-display,浏览器将继续遵循其加载字体的默认行为。

浏览器支持

从网站上可以查到,这个属性在各个浏览器中的支持程度为(最低版本):

现在我们知道了关于谷歌PageSpeed Insights性能检测工具应该怎么优化了,当然有问题的还不这一点,后期遇到感兴趣的在记录吧,目前PC端优化完成已经达到90+,就差移动端优化了,加油吧,继续努力,做到无论PC还是移动端均是90+就满意了,对了,模板优化是完成了,不包含独立购买的插件可能还是会引起部分性能的扣分,这个是没办法的,具体情况具体在意,毕竟也不能为了90分去停用或者以牺牲用户中心真正体验来换取啊,好了,有问题留言反馈吧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Web Fonts
  • font-display 介绍
  • 优化代码:
    • 浏览器支持
    相关产品与服务
    检测工具
    域名服务检测工具(Detection Tools)提供了全面的智能化域名诊断,包括Whois、DNS生效等特性检测,同时提供SSL证书相关特性检测,保障您的域名和网站健康。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档