页面跳转时字体闪烁的解决方案
本文章更适用于解决Astro框架的问题
一般来讲,当你为自己的网站设置一个全局字体时,若部署后不经过处理难免会遇到每次跳转页面时字体闪烁的问题,原理是:客户端路由会重建文档对象模型并重新解析样式,浏览器会重新请求字体,在字体没有请求成功之前,会优先使用默认字体,请求成功后则会替代默认字体,其过程引发的闪烁
解决方法
而现在要做的是:为你的静态托管服务器添加一个配置文件,来告诉服务器自动缓存字体资源。
如果你是Vercel托管平台,请在项目的根目录新建一个vercel.json文件。
{
"headers": [
{
"source": "/fonts/(.*)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000, immutable"
}
]
}
]
}
如果你是Netlify托管平台,则在项目的根目录新建一个netlify.toml文件。
[[headers]]
for = "/fonts/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"
max-age:缓存时间(秒)
immutable:告诉浏览器这个文件永远不会变,期间完全不跟服务器通信。
public:允许 CDN、浏览器多层缓存。