【发布时间】:2021-02-27 17:34:16
【问题描述】:
我在网站上使用自定义字体。它有效,但看起来它们缓存的时间不够长,因为我经常得到 FOUT。有时一天多次,在生产中。我希望我可以将字体缓存更长的时间(或其他解决方案),以防止这种情况经常发生。
字体在_document.tsx 中预加载如下:
<link
rel='preload'
as='font'
href='/fonts/Calibre-Regular.woff2'
type='font/woff2'
crossOrigin='anonymous'
/>
然后在_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>
我该如何改进呢?或者为字体设置更长的缓存时间? ????????
【问题讨论】:
-
我似乎遇到了这个问题,因为我的字体在网站第一次交互后重新下载..所以,它下载了多次..这会导致移位。你知道你最终做了什么吗?
-
我最终将
@font-face导入到外部fonts.css文件中,我将import "lib/fonts.css"导入_app.tsx中。您还可以使用<link rel="preload" href"...预取字体。我没有做最后一部分,但这个设置效果很好。当它是一个外部 css 文件时,似乎所有东西都比直接在_app.tsx中缓存得更好。 -
我将“@font-face”放在了 global.css 文件中,但我确实将“
-
是的,它们应该进入
_app,您可以通过在文件顶部执行以下操作将它们全局导入:import "lib/main.css";。
标签: caching fonts next.js webfonts vercel