WordPress优化之Specify Vary: Accept-Encoding header

在【WordPress最强优化—开启Gzip压缩】一文中说到可以通过开启Gzip压缩大幅提升WordPress网站页面加载速度,然而笔者在开启Gzip之后遇到了一个麻烦:火狐扩展-PageSpeed显示:You should Specify Vary: Accept-Encoding header

Google PageSpeed:Specify “Vary: Accept-Encoding” header

很明显这个问题是出在CSS和JS文件上的。网上查阅半宿终于找到了答案。

原来对CSS和JS文件开启Gzip后,会输出两份文件:Gzip压缩过的、未经Gzip压缩的,这样一来不仅没加快网页加载速度,反而更慢了;而 Vary: Accept-Encoding header 的作用就是指定输出压缩过的那部分文件。这样一来,Gzip压缩才算是真正起了作用。

2011年4月19日修订:【WordPress最强优化—开启Gzip压缩】一文中介绍的Gzip压缩只是针对网页的,JS和CSS并未得到压缩(JS和CSS压缩请参阅【WordPress优化之Gzip压缩CSS和Js文件】一文),所以上面这个“解释“是不正确的,笔者误导读者了!不过出现You should Specify Vary: Accept-Encoding header这种问题后通过以下代码确实可以解决!造成这个问题的具体原因待进一步探索。

那么如何指定 Vary: Accept-Encoding header呢?很简单,只需要将以下代码插入网站根目录下的.htaccess文件中即可(可以解决js,css,xml,gz类型文件未指定Accept-Encoding header的问题。可以根据实际情况增添文件类型,用”|”符号隔开):

<IfModule mod_headers.c>
<FilesMatch ".(js|css|xml|gz)$">
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>

Leave a Reply

Your email address will not be published. Required fields are marked *