对于 LAMP 服务器提供的 html、css 和 javascript 文件,这两种方法都有哪些优势。有更好的选择吗?
服务器使用 Json 向地图应用程序提供信息,因此需要大量的小文件。
对于 LAMP 服务器提供的 html、css 和 javascript 文件,这两种方法都有哪些优势。有更好的选择吗?
服务器使用 Json 向地图应用程序提供信息,因此需要大量的小文件。
为什么对 Apache 提供的文本文件使用 deflate 而不是 gzip?
简单的答案是不要。
RFC 2616将 deflate 定义为:
deflate RFC 1950 中定义的“zlib”格式与 RFC 1951 中描述的“deflate”压缩机制相结合
zlib 格式在RFC 1950中定义为:
0 1
+---+---+
|CMF|FLG| (more-->)
+---+---+
0 1 2 3
+---+---+---+---+
| DICTID | (more-->)
+---+---+---+---+
+=====================+---+---+---+---+
|...compressed data...| ADLER32 |
+=====================+---+---+---+---+
所以,一些标头和一个 ADLER32 校验和
RFC 2616 将 gzip 定义为:
gzip 由文件压缩程序“gzip”(GNU zip)产生的一种编码格式,如 RFC 1952 [25] 中所述。此格式是具有 32 位 CRC 的 Lempel-Ziv 编码 (LZ77)。
RFC 1952将压缩数据定义为:
该格式目前使用 DEFLATE 压缩方法,但可以轻松扩展以使用其他压缩方法。
CRC-32比 ADLER32 慢
与相同长度的循环冗余校验相比,它以可靠性换取速度(更喜欢后者)。
所以......我们有 2 种压缩机制,它们使用相同的压缩算法,但对标头和校验和使用不同的算法。
现在,底层的 TCP 数据包已经相当可靠了,所以这里的问题不是 GZIP 使用的 Adler 32 vs CRC-32。
事实证明,多年来许多浏览器实施了不正确的放气算法。他们不期望 RFC 1950 中的 zlib 标头,而是期望压缩的有效负载。同样,各种网络服务器也犯了同样的错误。
因此,多年来,浏览器开始实现模糊逻辑deflate 实现,他们尝试 zlib 标头和 adler 校验和,如果失败,他们尝试有效负载。
具有这样复杂逻辑的结果是它经常被破坏。Verve Studio 有一个用户贡献的测试部分,显示情况有多糟糕。
例如:deflate 在 Safari 4.0 中工作,但在 Safari 5.1 中被破坏,它在 IE 上也总是有问题。
所以,最好的办法是完全避免放气,轻微的速度提升(由于 adler 32)不值得冒有效载荷损坏的风险。
GZip 只是简单地放气加上校验和和页眉/页脚。不过, Deflate更快,因为我学到了很多东西。
您可能无法实际选择放气作为选项。与您可能期望的相反, mod_deflate不是使用 deflate 而是 gzip。因此,虽然提出的大多数观点都是有效的,但它可能与大多数人无关。
主要原因是 deflate 比 gzip 编码更快,并且在繁忙的服务器上可能会有所作为。对于静态页面,这是一个不同的问题,因为它们可以很容易地预压缩一次。
我认为 deflate 和 gzip 之间没有太大的区别,因为 gzip 基本上只是一个包裹 deflate 的标头(参见 RFC 1951 和 1952)。
mod_deflate 在您的服务器上需要较少的资源,尽管您可能会在压缩量方面付出一点代价。
如果您要提供许多小文件,我建议您对压缩和未压缩的解决方案进行基准测试和负载测试 - 您可能会发现在某些情况下启用压缩不会带来节省。
gzip 和 deflate 解压缩应该没有任何区别。Gzip 只是压缩了几十个字节的标头,包括一个校验和。校验和是压缩速度较慢的原因。但是,当您预压缩大量文件时,您希望将这些校验和作为文件系统中的健全性检查。此外,您可以利用命令行工具获取文件的统计信息。对于我们的网站,我们预压缩了大量静态数据(整个开放目录、13,000 款游戏、数百万关键字的自动完成等),我们的 Alexa 排名比所有网站快 95%。 传真搜索. 但是,我们确实使用了自制的专有网络服务器。Apache/mod_deflate 只是没有削减它。当这些文件被压缩到文件系统中时,您不仅会以最小的文件系统块大小对文件进行打击,而且还会在管理文件系统中的文件时产生所有不必要的开销,而 Web 服务器可能不太关心。您关心的应该是总磁盘占用空间和访问/解压缩时间,其次是能够预压缩此数据的速度。占用空间很重要,因为即使磁盘空间很便宜,您也希望尽可能多地放入缓存中。
在已安装 Apache2 和 deflate 模块(默认情况下)的 Ubuntu 上,您可以通过两个简单的步骤启用deflate gzip 压缩:
a2enmod deflate
/etc/init.d/apache2 force-reload
而你走了!我发现通过我的 adsl 连接提供的页面加载速度更快。
编辑:根据@GertvandenBerg 的评论,这启用了gzip 压缩,而不是放气。
如果我没记错的话