Rob*_*cks 7 webserver gzip content-encoding
您可能知道HTML相关的文件格式是使用GZip压缩,服务器端(通过Apache服务器上的mod_gzip)压缩的,并且由兼容的浏览器解压缩.("内容编码")
这仅适用于HTML/XML文件吗?假设我的PHP/Perl文件生成一些简单的逗号分隔数据,并将其发送到浏览器,它是否会被默认编码?
那些像Silverlight或Flash这样的平台,当他们下载这些数据时,它会被浏览器/运行时自动压缩/解压缩吗?有没有办法测试这个?
这仅适用于HTML/XML文件吗?
不:它经常用于CSS和JS文件,例如 - 因为它们是网站构成的最重要的东西(图像除外),因为JS框架和完整的JS应用程序,它代表了巨大的收益!
实际上,任何基于文本的格式都可以很好地压缩(相反,图像不能,例如,因为它们通常已被压缩) ; 有时,从Ajax请求返回的JSON数据也被压缩 - 它是文本数据,毕竟;-)
假设我的PHP/Perl文件生成一些简单的逗号分隔数据,并将其发送到浏览器,它是否会被默认编码?
这是一个配置问题:如果您将服务器配置为压缩这种内容,它可能会被压缩:-)
(如果浏览器说它接受gzip编码的数据)
以下是我在博客上使用的Apache 2配置示例(使用mod_deflate):
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/xml
</IfModule>
Run Code Online (Sandbox Code Playgroud)
在这里,我希望压缩html/xml/css/JS.
在Apache 1(mod_gzip)下,这是同样的事情,加上/减去我曾经使用过的一些配置选项:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_can_negotiate Yes
mod_gzip_minimum_file_size 256
mod_gzip_maximum_file_size 500000
mod_gzip_dechunk Yes
mod_gzip_item_include file \.css$
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.txt$
mod_gzip_item_include file \.js$
mod_gzip_item_include mime text/html
mod_gzip_item_exclude mime ^image/
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这里可以注意到的事情是,我不希望太小(增益不是很重要)或者太大(会占用太多CPU来压缩)要压缩的文件; 我想要压缩css/html/txt/js文件,但不是图像.
如果您希望以相同的方式压缩以逗号分隔的数据,则必须将其内容类型或其扩展名添加到Web服务器的配置中,以激活gzip压缩.
有没有办法测试这个?
对于直接返回浏览器的任何内容,Firefox的扩展名Firebug或LiveHTTPHeaders是必备的.
对于不通过浏览器标准通信方式的内容,可能会更难; 最后,你可能不得不最终使用像Wireshark这样的东西来"嗅"真正通过管道的东西......祝你好运!
那些像Silverlight或Flash这样的平台,当他们下载这些数据时,它会被浏览器/运行时自动压缩/解压缩吗?
要回答有关Silverlight和Flash的问题,如果他们发送一个表示支持压缩内容的Accept标头,Apache将使用mod_deflate或mod_gzip.如果他们不支持压缩,他们将不会发送标题.它将"正常工作." - Nate
我认为Apache mod_deflate比mod_gzip它更常见,因为它是内置的并且做同样的事情.查看mod_deflate(上面链接的)文档,您将看到根据MIME类型指定要压缩的文件类型很容易.通常,压缩HTML,CSS,XML和JavaScript是值得的.图像已经被压缩,因此它们不会受益于压缩.
| 归档时间: |
|
| 查看次数: |
2100 次 |
| 最近记录: |