如何在.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的一些错误,可选。

如果有人需要这个NGINXconfiguration文件这里是摘录:

 location ~* \.(js|css|xml|gz)$ { add_header Vary "Accept-Encoding"; (... other headers or rules ...) }