如何在.htaccess中指定“Vary:Accept-Encoding”标头
谷歌PageSpeed说我应该“指定一个变化:接受编docker”JS和CSS。 我如何在.htaccess中做到这一点?
我想这意味着你可以为你的css和js文件启用gzip压缩,因为这样可以使客户端同时接收gzip编码的内容和一个普通的内容。
这是如何在apache2中做到这一点:
<IfModule mod_deflate.c> #The following line is enough for .js and .css AddOutputFilter DEFLATE js css #The following line also enables compression by file content type, for the following list of Content-Type:s AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml #The following lines are to avoid bugs with some browsers BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html </IfModule>
以下是如何添加Vary Accept-Encoding
标头: [src]
<IfModule mod_headers.c> <FilesMatch "\.(js|css|xml|gz)$"> Header append Vary: Accept-Encoding </FilesMatch> </IfModule>
Vary:
标题告诉说,为这个URL服务的内容将根据某个请求头的值而变化。 在这里它说,它会为客户提供不同的内容,他们说Accept-Encoding: gzip, deflate
(一个请求头),而不是发送给客户端的内容。 这个AFAIK的主要优点是让中间caching代理知道他们需要有两个不同版本的同一个url,因为这样的改变。
恐怕Aularon没有提供足够的步骤来完成这个过程。 通过一些试验和错误,我能够成功地在我的专用WHM服务器上启用Gzipping。
以下是步骤:
-
在WHM中运行EasyApache,在Exhaustive Options列表中selectDeflate,然后重build服务器。
-
一旦完成,转到服务configuration>> Apacheconfiguration>>包含编辑器>>发布VirtualHost包括,select所有版本,然后粘贴mod_headers.c和mod_headers.c代码(在Aularon的post上面列出)上的另一个input字段。
-
一旦保存,我平均可以节省75.36%的数据! 您可以使用此HTTP压缩工具运行前后testing,以查看您自己的结果: http : //www.whatsmyip.org/http_compression/
希望这对大家都有用!
- 马特
要gzip你的字体文件以及!
add "x-font/otf x-font/ttf x-font/eot"
如下所示:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml x-font/otf x-font/ttf x-font/eot
花了很多时间来澄清那是什么。 请阅读这篇文章,以获取高级.HTACCESS
代码,并了解他们的工作。
您可以使用:
Header append Vary "Accept-Encoding" #or Header set Vary "Accept-Encoding"
这让我疯狂,但似乎aularon的编辑在"Vary"
之后错过了冒号。 所以将"Vary Accept-Encoding"
改为"Vary: Accept-Encoding"
为我解决了这个问题。
我会在下面发表评论,但它似乎不会让我。
无论如何,我希望这救了一个人同样的麻烦,我正在。
无需指定或甚至检查文件是否已压缩,您可以将其发送到每个文件,在每个请求上。
它告诉下游代理如何匹配未来的请求头,以决定是否可以使用caching的响应,而不是从原始服务器请求新的请求。
<ifModule mod_headers.c> Header unset Vary Header set Vary "Accept-Encoding, X-HTTP-Method-Override, X-Forwarded-For, Remote-Address, X-Real-IP, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port, X-Forwarded-Server" </ifModule>
- 未安装的是修复老GoDaddy托pipe的一些错误,可选。
如果有人需要这个NGINX
configuration文件这里是摘录:
location ~* \.(js|css|xml|gz)$ { add_header Vary "Accept-Encoding"; (... other headers or rules ...) }