为什么许多网络服务器默认没有启用 gzip 等功能?

为什么许多网络服务器默认没有启用 gzip 等功能?

在玩过多个在线 Web 服务器后,我发现 goDaddy 默认不启用 gzip 之类的问题。一些 IIS 丢失、默认安装 apache 等问题也是如此。

我经常遇到一些服务器没有默认开启可以提高网站速度的基本功能。

这让我想到了两个选择:每个制作 webserve 的人都打包得很糟糕,或者我只是不明白他们为什么这样做。更有可能的是,我不知道他们为什么不这样做。

有人能告诉我为什么你要在网络服务器上禁用诸如 gzip 和各种缓存控制标头之类的功能吗?

我以为这样可以提高网站速度,正如 ySlow 和 PageSpeed 一直告诉我的那样。那么缺点是什么呢?

答案1

“资源” - 需要内存和 CPU 来动态压缩内容……虽然占用很少一点资源,但仍然需要资源,在一个或两个网站上这很容易,但在 1000 个或更多网站上……事情可能会变得很奇怪。此外 - Falcon 的评论是正确的 - 供应商确实希望将故障安全的“基本”配置作为默认配置。

-肖恩

更新: 我也忘了:每次请求进行实际压缩时的额外执行时间 - 首先加载 mod_deflate [deflate_module] 会使用额外的内存,因此通常每个过程都会变得更大一些,更慢一些。〜就像我说的,一般来说微不足道,但如果你一开始就缺乏资源......

答案2

你可能会认为这是因为并不是每个浏览器都支持 GZip。这种解释是错误的:服务器可以根据Accept-Encoding请求的标头来向后兼容,该标头指示浏览器是否可以接受 GZip 压缩的内容。

一个可能的解释是,没有必要压缩所有内容。为什么要压缩 ZIP 文件或 JPEG 图像?最好的情况是,大小保持不变。最坏的情况是,它会变得更大。

另一个因素是服务器端性能。当开发人员了解对 CPU 的影响以及 ZGip 对于特定内容的优缺点时,最好让开发人员打开压缩。

答案3

其中一个原因可能是 IE6 兼容性。虽然 IE6 支持 gzip,但压缩后的大小最多只能达到 65535 字节。

如果您的页面大于该大小,其余部分将被无故截断。但有趣的是:只有当页面从文件缓存加载时才会发生这种情况,而不是通过网络接收时,这让整个混乱局面难以调试。

可以通过处理请求的标头来解决这个问题,但有时会有使用 IE6 的透明代理,例如病毒软件。代理不会改变任何 User-Agent 标头,所以你运气很差。幸好 IE6 几乎被消灭了。

不确定是否所有版本都受到影响还是只有部分版本受到影响,但上述情况正是我工作的网站长期关闭 gzip 的原因。

答案4

Web 服务器需要执行的指令越少,它能够处理的请求就越多。

gzip 压缩需要执行指令,因此速度会变慢。如果您需要,可以将其打开。

相关内容