.htaccess 如何指定;更改:接受编码“;htaccess中的头文件
GooglePageSpeed说我应该为JS和CSS“指定一个Vary:Accept编码头”。如何在.htaccess中实现这一点?我想这意味着您要为css和js文件启用gzip压缩,因为这将使客户端能够接收gzip编码的内容和普通内容 以下是在apache2中的操作方法:.htaccess 如何指定;更改:接受编码“;htaccess中的头文件,.htaccess,pagespeed,.htaccess,Pagespeed,GooglePageSpeed说我应该为JS和CSS“指定一个Vary:Accept编码头”。如何在.htaccess中实现这一点?我想这意味着您要为css和js文件启用gzip压缩,因为这将使客户端能够接收gzip编码的内容和普通内容 以下是在apache2中的操作方法: <IfModule mod_deflate.c> #The following line is enough for .js and .css AddOutputFilter DEFLATE js
<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:
头告诉,为该url提供的内容将根据特定请求头的值而变化。在这里,它表示它将为表示接受编码的客户机提供不同的内容:gzip,deflate(请求头),而不是为不发送此头的客户机提供的内容。AFAIK的主要优点是让中间缓存代理知道,由于这种更改,它们需要相同url的两个不同版本。恐怕Aularon没有提供足够的步骤来完成此过程。通过一些尝试和错误,我能够在我专用的WHM服务器上成功地启用Gzip
以下是步骤:
- 在WHM中运行EasyApache,在详尽选项列表中选择Deflate,然后重建服务器
- 完成后,转到服务配置>>Apache配置>>包含编辑器>>发布VirtualHost包含,选择所有版本,然后将mod_headers.c和mod_headers.c代码(在Aularon的帖子中列出)粘贴到输入字段中的另一个代码之上
- 保存后,我看到数据平均节省了75.36%!您可以使用此HTTP压缩工具运行前后测试以查看自己的结果:
- 马特
- 这让我抓狂,但奥拉隆的编辑似乎在
“Vary”
之后遗漏了冒号。因此,将“Vary-Accept-Encoding”
更改为“Vary:Accept-Encoding”
为我解决了这个问题
我会在帖子下面发表评论,但它似乎不会让我这么做
不管怎样,我希望这能帮别人省去和我一样的麻烦。也帮你升级字体文件
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
无需指定甚至检查文件是否已压缩, 您可以根据每个请求将其发送到每个文件 它告诉下游代理如何匹配未来的请求头来决定 是否可以使用缓存的响应而不是请求新的响应 一个来自源服务器
割台未设置变化
标题集变化“接受编码、X-HTTP-Method-Override、X-Forwarded-For、远程地址、X-Real-IP、X-Forwarded-Proto、X-Forwarded-Host、X-Forwarded-Port、X-Forwarded-Server”
- 取消设置是为了修复旧版GoDaddy主机中的一些错误
location ~* \.(js|css|xml|gz)$ {
add_header Vary "Accept-Encoding";
(... other headers or rules ...)
}
花了很多时间来澄清那是什么。请阅读以获取高级
.HTACCESS
代码并了解它们的功能
您可以使用:
Header append Vary "Accept-Encoding"
#or
Header set Vary "Accept-Encoding"
我不认为是这样。我的JS和CSS已经被压缩了。PageSpeed仍在抱怨。我认为mod_deflate默认发送Vary头。我已经完成了您上面提到的操作。.js文件仍然没有被压缩。@Andy;也许您的服务器没有“mod_deflate.c”模块。Apache2.2不需要上面答案中的mod_headers部分。mod_deflate已经可以满足您的需要。你确定这会有所不同吗?在2.2文档中,没有一个示例包含冒号:不确定为什么关闭它,仅仅因为它不涉及编程语言并不意味着它与编码无关。@BlueRaja DannyPflughoeft我同意,这已经被浏览了65100多次,所以我认为这是一个搜索很好的主题,更不用说我每天都回答htaccess问题了。我知道这一点很难理解,但标题
不同:Accept Encoding
会告诉浏览器根据Content Encoding
标题在缓存中存储页面的一个版本。您应该看到和@IsmaelMiguel它实际上会告诉客户机(更重要的是,途中的任何缓存服务器),对于客户机s
Accept Encoding`request header值的每个变量,文件都不同,而不是服务器响应头值的每个内容编码
变体。@BlueRaja DannyPflughoeft,因为拥有大量声誉的用户和寻求声誉的用户通过搜索要关闭的问题来建立声誉。令人沮丧的是,它经常导致不应该关闭的问题被关闭。
location ~* \.(js|css|xml|gz)$ {
add_header Vary "Accept-Encoding";
(... other headers or rules ...)
}
Header append Vary "Accept-Encoding"
#or
Header set Vary "Accept-Encoding"