通过.htaccess设置过期标头和gzipping数据

时间:2012-11-11 15:30:31

标签: apache .htaccess httpd.conf webfonts expires-header

我正在尝试对其进行设置,以便浏览器长时间缓存网页字体并尝试对其进行gzip以便更快下载。

根据我的理解,您可以通过Apache中的httpd.conf文件或.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文件中的位置或者它可以放在哪里都重要吗?

1 个答案:

答案 0 :(得分:3)

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

Apache Documentation screenshot

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

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

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

PHPInfo Screenshot

修改

在回答有关字体MIME类型的正确方法的问题时,就其与Apache Server的文件关联而言,我的mime.types文件(位于httpd.conf所在的apache conf文件夹中)告诉我< / p>

application/x-font-(extension)

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

enter image description here

对于接收网络字体的浏览器,this article似乎表明不考虑MIME类型,因此无关紧要。但是this one似乎与此相矛盾。据我了解,没有官方的字体/ MIME类型,因此任何浏览器实现都不在MIME规范之内。

相关问题:

Proper MIME type for fonts

Correct Apache AddType directives for font MIME types

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