0

我在服务器上有一个必须下载到移动设备的文件存储库。服务器上的文件下载到设备后可以在服务器上更新;并且在随后的连接中,只需将修改后的文件下载到设备中。

我的选择是提前准备拉链或在飞行中准备它们。为了提前创建它们,我必须为所有以前版本的存储库提前创建一个 zip。为了即时准备,我可以找出需要下载的文件并即时压缩它们。

我认为这个决定取决于即时准备这样一个拉链的成本。

我的问题是:

  • 即时创建拉链有多贵?可能有成千上万的移动设备;应该可以缓存准备好的 zip 文件,但我还想考虑为每个连接单独压缩的成本。这样做的目的是避免在服务器上存储历史数据

  • 除了即时压缩的成本外,我还应该考虑其他参数吗?

服务器在嵌入式 tomcat 进程中运行。

4

2 回答 2

1

网络操作期间的动态压缩(用于 SSH/SFTP、SSL/TLS、HTTP(S) 等)不仅不会降低传输速度,还会显着提高传输速度!因此,只要有可能,就欢迎压缩。

现在,您可以压缩发送到通道的数据,也可以压缩文件并发送压缩文件。发送压缩 ZIP 的问题在于,在大多数情况下(流式 ZIP 压缩库很少见,但 IIRC 确实存在)您无法在打包时流式传输 ZIP 文件——您需要等待打包完成才能响应请求。如果档案很大(几十兆字节或更大),这可能会产生问题。好处是您可以将文件打包一次并将其保存在缓存中一段时间​​(例如一周或一个月)。

于 2013-04-17T18:30:31.333 回答
0

我建议您看一下Google 演示文稿中的第 13 张幻灯片。

他们使用zippy,这是一种定制的 zip 实现,但要点很明确:压缩比发送数据便宜得多。是的,您仍然需要发送文件,因此小文件节省的费用较小,但大多数情况下压缩都会得到回报。

于 2013-04-18T09:12:13.010 回答