如何在.htaccess中为指定Google Font添加Expires Headers?
能不能通过.htaccess给Google Fonts链接添加Expires Headers?
嘿,这个问题挺常见的,我来给你梳理清楚:
核心结论:不行,你没法用自己服务器的.htaccess控制第三方资源的缓存
.htaccess是Apache服务器的本地配置文件,它只能作用于托管在你自己服务器上的文件,完全没法干预像fonts.googleapis.com这类外部域名的资源缓存规则——毕竟那是Google的服务器,缓存策略由他们说了算。
那GTmetrix的提示怎么解决?给你几个可行的优化方案
1. 本地托管字体文件(最推荐,彻底解决缓存提示)
既然没法控制第三方的缓存,那把字体拿到自己服务器上来管就好了:
- 从Google Fonts官网下载你需要的Nunito和Poppins全字重字体文件
- 把文件上传到你服务器的专门目录,比如
/assets/fonts/ - 在你自己的CSS里用
@font-face引入本地字体(替代原来的Google Fonts链接) - 这时就能通过
.htaccess给这些本地字体设置长期缓存了,添加这段代码到你的.htaccess文件里:
这样GTmetrix的缓存提示就会消失,还能减少对外部域名的依赖,提升加载稳定性。# 为本地字体文件设置1年的长期缓存 <FilesMatch "\.(woff|woff2|ttf|otf|eot)$"> ExpiresActive On ExpiresDefault "access plus 1 year" Header set Cache-Control "public, immutable" </FilesMatch>
2. 接受Google的默认缓存(省心方案)
其实Google已经给Fonts资源设置了合理的缓存策略:woff2字体文件默认有1年的缓存,而fonts.googleapis.com的CSS文件缓存时长较短(因为Google可能会更新字体分发规则)。如果GTmetrix提示的是CSS文件的缓存,完全不用过度担心——这是Google为了保证用户能获取到最新配置的合理设计。
3. 用预加载优化加载体验(补充方案)
如果不想本地托管,你可以通过预加载标签提升字体的加载速度,弥补缓存的不足。先从Google Fonts的CSS文件里提取对应字体的实际资源URL,然后在页面<head>里添加:
<link rel="preload" href="对应Nunito字体的woff2文件URL" as="font" type="font/woff2" crossorigin> <link rel="preload" href="对应Poppins字体的woff2文件URL" as="font" type="font/woff2" crossorigin>
内容的提问来源于stack exchange,提问作者Easy Tricks For Android
相关产品推荐
相关产品推荐

