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

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

我认为决定取决于在飞行中准备这种拉链的成本。

我的问题是:


快速创建拉链的价格是多少?可能会有成千上万的移动设备。应该可以缓存准备好的zip文件,但我还想考虑每个连接分别压缩的成本。其目的是避免将历史数据存储在服务器上
除了即时压缩的成本外,我还应该考虑其他参数吗?


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

最佳答案

在网络操作过程中进行即时压缩(如SSH / SFTP,SSL / TLS,HTTP(S)等)不仅会降低传输速度,而且会大大提高传输速度!因此,尽可能欢迎压缩。

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

10-08 08:48