【前端优化】第三方字体优化方案大全

前言
因为快过年了,相信有些读者如果有年度账单,xx总结,过年期间使用的H5等应用免不了需要加一些花里胡哨的字体,尽管可能没有用,但是奈何UI稿已发,硬着头皮优化一下。接下来带来几种优化方式,字体再多也不加班!!!

font-spider 字蛛
xx曾说过,“如果它大就想办法让它变小”。

所以我们可以将我们所用到的所有文字,单独复制到静态 html中 通过 font-spider 过滤掉我们不会用到的文字,并重新生成一个字体包,其中只包含我们会用到的文字。这样就大大减小了字体包的体积。

初始化npm项目
npm init
复制代码
下载字蛛
npm install font-spider -g
复制代码
创建一个index.html
加入你会用到的文字资源到span中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    @font-face {
        font-family: 'font';
        src:url("./font/FZGongYHJW.ttf");
    }
    span{
        font-family: "font";
        font-size: 20px;
    }
</style>
<body>
    <span>1234567890.%</span>
</body>
</html>
复制代码

指令压缩
font-spider index.html
复制代码

在这里插入图片描述

运行指令会生成一个.font-spider的文件夹中包含一个已经压缩好的字体包。后续可以使用这个字体包,前提是需要沟通好到底需要哪些文字字符等。

效果完美! 从1.5m 降到 3.76kb!

此方法基于静态文档的文字,来缩减字体包,如需可视化生成字体包可以使用 #Fontmin

cdn 加速
但是尽管根据需求压缩后的大小,可能还会有读者觉得,我用的字比较多,可能还是比较大那咋办啊。不慌,还有别的办法。

在这里插入图片描述

可以将压缩后的字体包,上传到cdn提升加载速度。只需要将我们将上传后的地址引入

@font-face {
font-family: ‘font’;
src:url(“https://xxxx.com/font/FZGongYHJW.ttf”);
}
复制代码
这里可以通过腾讯云或者七牛云 ,大体就是上传文件和直接包含到前端资源文件中,通过缓存url的文件,来加速。由于过于简单(要钱)这里不做演示了。可以大大提升加载速度。

开启 gzip 加速
接下来弄点不要钱但是效果依旧不错的加速方式。实际上就是通过nginx开启gzip压缩传输

开启和关闭gzip模式
gzip on|off;
gizp压缩起点,文件大于1k才进行压缩
gzip_min_length 1k;
gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 5;
进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript font/ttf;
#nginx对于静态文件的处理模块,开启后会寻找以.gz结尾的文件,直接返回,不会占用cpu进行压缩,如果找不到则不进行压缩
gzip_static on|off
是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区
gzip_buffers 2 4k;
设置gzip压缩针对的HTTP协议版本
gzip_http_version 1.1;
复制代码
并不需要额外设置其他,gzip会对ttf进行默认压缩传输。

image.png 成功成1.6mb 压缩到1.2mb 效果显著!

font-display 调整顺序,不阻塞加载
最后我们还可以通过font-display来调整加载顺序

设置为font-display:fallback;来调整加载顺序,减少白屏加载字体包时间,保证加载时间过长就先用默认字体显示,您希望用户尽快开始阅读,并且不想在加载新字体时四处移动文本来打扰他们的体验!

最后
如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163相互学习,我们会有专业的技术答疑解惑

如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star:http://github.crmeb.net/u/defu不胜感激 !

PHP学习手册:https://doc.crmeb.com
技术交流论坛:https://q.crmeb.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRMEB定制开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值