字体预加载怎么写才真正有效?
我在项目里用了 Google Fonts,但页面首次加载时文字还是会闪一下无样式状态(FOIT),想通过预加载优化。试过在 head 里加 <link rel="preload" as="font">,但浏览器控制台报错说格式不对,而且字体好像也没提前加载。
我现在的写法是这样的:
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="external nofollow" as="font" type="font/woff2" crossorigin>
是不是哪里搞错了?Google Fonts 返回的是 CSS 文件,不是直接的字体文件,这样能预加载吗?
直接从CSS里找到实际字体文件链接来预加载,记得把
href替换为你实际用到的字体URL。这招我试过好几次,FOIT基本能解决。rel="preload"写法确实不太对。这里有个更靠谱的做法:
首先,在
head里保留 Google Fonts 的链接:然后你需要找到实际的字体文件 URL。打开浏览器开发者工具,在 Network 面板里查看加载的字体文件。假设找到的字体文件是 WOFF2 格式的,就可以这样预加载:
注意几点:要加
crossorigin属性,因为字体通常跨域加载;as要设置为font;type设置正确也很重要。做完这些,FOIT 应该会明显改善。别忘了测试不同网络情况下的表现,有时候 CDN 缓存也会有影响。这活儿真挺烦人的,但为了用户体验值了。