Google PagesPeed说,我应该为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的主要优点是让中间的缓存代理知道,由于这种变化,他们需要具有两个不同版本的同一URL。

其他提示

恐怕Aularon没有提供足够的步骤来完成该过程。有了一点反复试验,我能够成功地启用专用WHM服务器的GZZIPPIPT。

以下是步骤:

  • 在WHM中运行EasyApache,在详尽的选项列表中选择放气,然后重建服务器。

  • 完成后,goto服务配置>> apache配置>>包括编辑器>>帖子virtualhost include,选择所有版本,然后粘贴mod_headers.c and mod_headers.c code(上面在Aularon's帖子中列出了Aularon的帖子),在另一个内部的另一个版本)输入字段。

  • 保存后,我平均看到了75.36%的数据节省!您可以使用此HTTP压缩工具在测试前后运行A,以查看您自己的结果: 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" 修复了我的问题。

我本可以在帖子下面发表评论,但似乎不会让我。

无论如何,我希望这能节省某人的同样麻烦。

如果有人需要这个 NGINX 配置文件这是摘要:

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

无需指定甚至检查文件是否已压缩,您可以按每个请求将其发送到每个文件。

它告诉下游代理如何匹配未来的请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求新鲜的响应。

<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>
  • unset 是在旧的Godaddy托管中修复一些错误。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top