4

我正在尝试对其进行设置,以便浏览器长期缓存 webfonts,并尝试对它们进行 gzip 压缩以加快下载速度。

据我所知,您可以通过httpd.confApache 中的文件或通过.htaccess.

我不确定如何判断 gzip 是否启用,我读了一些关于搜索httpd.conf文件的内容DEFLATE;我这样做了,但什么也没找到 - 所以不确定它是否已启用!?

不管怎样,我已经把下面的代码放到了.htaccess文件中,部分原因是我不知道把它放在 httpd.conf 文件的什么地方,部分原因是在 .htaccess 文件中进行更改更容易,而不会不断地打扰我的主机。

这是代码..

# Add correct content-type for fonts
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/x-woff .woff
AddType image/svg+xml .svg

# Compress compressible fonts
AddOutputFilterByType DEFLATE font/ttf font/otf image/svg+xml

# Add a far future Expires header for fonts
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType font/x-woff "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"

现在,我想知道这是否正确,因为我也看到了类似但不同的到期代码..

ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

将它放在文件中的哪个位置是否重要,.htaccess或者它可以放在任何地方?

4

1 回答 1

3

ExpiresByType 可以进入您的 httpd.conf、virtualhost 配置或 htaccess,如每个指令条目顶部的 apache 文档概述框所示:

Apache 文档截图

http://httpd.apache.org/docs/2.2/mod/mod_expires.html#expiresbytype

上下文列表是您如何知道可以将各种 Apache 指令类型放入哪些配置文件的方法。

假设您使用的是 PHP,您的 phpinfo 详细信息应该会告诉您是否启用了 gzip。

PHPInfo 截图

编辑

针对您关于字体的正确 MIME 类型的问题,就它们与 Apache 服务器的文件关联而言,我的 mime.types 文件(位于 httpd.conf 所在的 apache conf 文件夹中)告诉我

application/x-font-(extension)

将是与 ExpiresByType 一起使用的关联。我建议先让字体工作,然后检查字体 url 的标题,看看它是否给出了正确的到期日期。

在此处输入图像描述

至于接收网络字体的浏览器,这篇文章似乎表明不考虑 MIME 类型,因此无关紧要。但这似乎与此相矛盾据我了解,没有官方字体/ MIME 类型,因此任何浏览器实现都超出了 MIME 规范。

相关问题:

字体的正确 MIME 类型

更正字体 MIME 类型的 Apache AddType 指令

我没有在 .htaccess 中看到任何指定放置要求的内容,因此您应该安全地将这些规则放在您认为合适的任何地方,尽管如果您执行 AddTypes,您需要在引用该声明类型的任何进一步指令之上执行此操作。最好将它们放在重写规则上方的顶部附近。

于 2012-11-14T06:10:33.257 回答