这仅适用于 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 文件,而不是图像。
如果您希望以相同方式压缩逗号分隔的数据,则必须将其内容类型或扩展名添加到您的网络服务器的配置中,以便为其激活 gzip 压缩。
有什么方法可以测试吗?
对于任何直接返回浏览器的内容,Firefox 的扩展 Firebug 或 LiveHTTPHeaders 是必备的。
对于不经过浏览器标准通信方式的内容,可能会比较难;最后,你可能不得不使用类似Wireshark 的东西来“嗅探”管道中真正经过的东西......祝你好运!
Silverlight 或 Flash 等平台呢?
当他们下载此类数据时,是否会对其进行压缩/解压缩
由浏览器/运行时自动执行?
要回答您关于 Silverlight 和 Flash 的问题,如果它们发送 Accept 标头表明它们支持压缩内容,Apache 将使用 mod_deflate 或 mod_gzip。如果他们不支持压缩,他们将不会发送标头。它会“正常工作”。 – Nate