gzip压缩对移动设备有用吗?

26

我想知道在移动设备上使用gzip压缩是否像在桌面电脑上那样有用。

手机会更耗电吗? 还是会因为节省带宽而节约电量? 页面加载速度会更快,还是解压过程会因设备有限而变慢?

压缩的数据实际上是否到达最终用户,或者被3G提供商在某些地方解压缩了?(这可能是一个愚蠢的问题,请原谅)。

谢谢。

3个回答

24

这绝不是一个愚蠢的问题。

正确的选择是支持 GZip。

事实证明,Lempel-Ziv解压缩相当便宜(与压缩相比),而带宽通常非常昂贵,尤其是对于漫游消费者来说,并且需要更多的电池能量和传输时间。


此外,在拥挤地区,带宽可能非常有限,而且漫游费用也很昂贵。 - Nate
所以你认为解压过程比额外的传输成本消耗更少的电池? 那么压缩后的数据到达最终用户呢? - Savageman
3
@Savageman - 绝对没错。相比于通过无线电接口传输额外数据的耗电量,CPU解压缩数据所使用的功率非常小。至于漫游,其货币成本可能在每兆字节数美元范围内。 - chrisbtoo
是的,数据会被压缩并传递到用户那里——对于移动运营商而言,故意解压数据并使其变得更大是不明智的,因为这将比必要的拥塞他们的网络。 - chrisbtoo
今天有一位客户对我说:“我们应该删除所有URL的前缀,因为它们都是相同的,这样可以节省一些传输时间”,这是从一个JSON文件中提出的(我同意这个原则),但是同一天另一位客户说:“不需要,它将通过gzip压缩来保存”。那么哪一个是正确的呢?(两个Web服务大约使用30个URL。) - Nicolas Lauquin
1
@Gros:一般的原则是进行实验(基准测试和分析)。为了比较,尝试将带有URL前缀的JSON文件的压缩长度与不带URL前缀的JSON文件进行比较。在实践中,与从许多不同域获取(如果它们不都在同一个域上)的开销相比,差异将是无关紧要的。 - rwong

3

这完全取决于你的瓶颈在哪里。

  • 如果CPU非常弱,任何增加负担的操作都是不好的。
  • 如果是网络连接问题,压缩数据传输可以大幅提升性能。
  • 无论哪种情况,对电池的负荷应该都很小。

随着今天移动设备的发展,CPU性能肯定比桌面电脑要弱一些,但通常足够用于gzip压缩和解压缩。在大多数情况下,瓶颈将是网络连接,因此gzip压缩肯定有用。然而,在极少数情况下,恰恰相反。

您只需要运用一点常识,看看我的答案是否适用于您的特殊情况即可;-)


谢谢,看起来很有趣!那么压缩后的数据如何到达最终用户呢? - Savageman
有趣的一点!如果您发送一个gzip压缩文件,它肯定会作为这样的传输到接收者那里。如果您在http传输中使用gzip压缩,则途中的“中继”站点根本不应关心消息内容,并且也应该将其保持不变。(他们为什么要浪费自己的CPU时间来增加转发包的带宽使用率呢?) - Treb
是的,我猜相反的情况更有可能。 - Savageman

0
你可能还想调查的一个问题是,你考虑的移动浏览器是否支持压缩。例如,我刚刚检查了我的黑莓Storm发送的请求头,它没有发送任何“Accept-Encoding”头--这意味着服务器不应该发送压缩响应。

你说得对,非常好的观点。但Apache会自动为我处理这个问题。 :-) - Savageman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接