eiv*_*dml 5 fonts caching webfonts next.js vercel
我在网站上使用自定义字体。它有效,但看起来它们缓存的时间不够长,因为我经常得到 FOUT。有时一天多次,在生产中。我希望我可以将字体缓存更长的时间(或其他解决方案),以防止这种情况经常发生。
字体是这样预加载的_document.tsx
:
<link
rel='preload'
as='font'
href='/fonts/Calibre-Regular.woff2'
type='font/woff2'
crossOrigin='anonymous'
/>
Run Code Online (Sandbox Code Playgroud)
然后_app.tsx
像这样:
<script jsx>{`
@font-face {
font-family: 'Calibre';
font-display: swap;
src: url('/fonts/Calibre-Regular.woff2') format('woff2'),
url('/fonts/Calibre-Regular.woff') format('woff');
}
`}</script>
Run Code Online (Sandbox Code Playgroud)
我该如何改进?或者为字体设置更长的缓存时间?
在没有看到完整示例的情况下,我\xe2\x80\x99d:
\nlink
和script
(应该是一个style
标签?) 应该是初始 HTML 的一部分<link />
标签和单独的 CSS 样式,其中仅包含@font-face
声明。是的,这会增加一个额外的 HTTP 请求,但 CSS 可能会遵循 Vercel\xe2\x80\x99s 静态缓存规则,并且 31 天内不会更改:https ://vercel.com/docs/edge-network/caching#static -files(尽管这里\xe2\x80\x99不清楚当您重新部署该文件或进行任何部署时缓存是否失效)例如,要将fonts/
目录中的所有内容缓存一周(并假设新的外部 CSS 文件也在那里),配置将为:
{\n "routes": [\n {\n "src": "/fonts/(.*)",\n "headers": { "cache-control": "s-maxage=604800" },\n "dest": "/fonts/$1"\n }\n ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n这是基于文档中的配置示例:https ://vercel.com/docs/configuration#routes/headers
\n希望其中的一个或多个能够对您有所帮助!
\n 归档时间: |
|
查看次数: |
1213 次 |
最近记录: |