网络面板里字体请求要到 CSS 下载完才开始,首屏字体生效比预期晚 800ms,瀑布图上一层层往下排。日志里能对上时间点,这种反而好排。
@import 写在 CSS 顶部,浏览器必须先下完外层样式表、解析到那一行,才知道要去取字体。串行链路一长,首屏就等。这一点先确认清楚,后面就不用反复试。
<link rel='preload' href='/fonts/main.woff2' as='font'
type='font/woff2' crossorigin>
「@import 字体加载」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:把 @import 换成 HTML 里的 preload 提前发起请求;确实要保留 import 的挪到最前面 别和其他规则混在一起;改完看瀑布图 字体请求应该和样式表并行。
结果对不对很好判断,瀑布图里字体和样式表并行下载,首屏字体生效提前了 700ms 以上。
