如何使用htaccess为woff和woff2字体文件设置缓存TTL?

时间:2020-12-11 作者:akarim

我的WordPress站点htaccess文件当前有以下条目可用于设置woff和woff2字体文件的缓存到期时间:

<IfModule mod_expires.c>
  # Content type
    AddType application/font-woff   .woff
    AddType application/font-woff2  .woff2
    ExpiresActive on
  # Web fonts
    ExpiresByType application/font-woff   "access plus 1 year"
    ExpiresByType application/font-woff2  "access plus 1 year"
</IfModule>
但我仍然得到建议,可以在速度测试工具中为这些文件设置缓存TTL。下面是一个缓存效率问题的示例:https://gtmetrix.com/reports/bydik.com/ad8hZTzh/

enter image description here

我的htaccess文件有什么问题吗?我如何解决这个问题?

1 个回复
SO网友:MrWhite

ExpiresByType font/woff2  "access plus 1 year"
ExpiresByType application/font-woff2  "access plus 1 year"
ExpiresByType application/x-font-woff2  "access plus 1 year"
您需要设置ExpiresActive On (顶部)以使这些指令生效。

您也不需要所有这3条指令。您应该检查Content-Type 服务器随此资源发送的mime类型的HTTP响应标头-它只能是一个。mime类型需要与服务器的响应相匹配。

要确定这些指令是否正常工作,应检查ExpiresCache-Control: max-age HTTP响应中的标头。

UPDATE: 您使用的是CDN(Cloudflare),因此最终缓存响应标头将由CDN确定。

您正在提供两个字体文件:

  1. https://example.com/libs/fonts/fontsolaimanlipi.woff
  2. https://example.com/fonts/fontawesome.woff2woff 字体文件(非woff2),并随application/x-font-woff mime类型(因此需要为此修改上述指令)。

    第二个是不发送Content-Type 标题(因此,除非您有ExpiresDefault 指令?),因此,可能您的服务器没有启用此mime类型。例如:

    AddType font/woff2 .woff2
    
    或者,这可以在CDN中配置。