这只适用于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>
在这里,我希望压缩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>
注意到的事情是我不希望压缩文件太小(增益不会很重要),也不要太大(会消耗太多CPU来压缩);我希望压缩css/html/txt/js文件,但不包括图像。
如果您希望以逗号分隔的数据以相同的方式进行压缩,则必须将其内容类型或扩展名添加到Web服务器的配置中,以激活gzip压缩。
“有没有办法测试这个?”对于直接返回到浏览器的任何内容,Firefox的扩展
Firebug或
LiveHTTPHeaders都是必备的。
对于不通过浏览器的标准通信方式传输的内容,可能会更难一些;最终,您可能不得不使用类似
Wireshark的东西来“嗅探”实际通过管道传输的内容...祝你好运!
关于Silverlight或Flash这样的平台,当它们下载这些数据时,浏览器/运行时会自动压缩/解压缩吗?
回答关于Silverlight和Flash的问题,如果它们发送一个支持压缩内容的Accept头,Apache将使用mod_deflate或mod_gzip进行压缩/解压缩。如果它们不支持压缩,它们将不会发送头信息。这将“自动工作”。- Nate