我有一个 Web 服务器,其中包含许多可供下载的压缩存档文件(zip 文件)。我想大大减少这些档案在服务器上占用的磁盘空间。
关键的见解是,这些档案实际上是相同未压缩内容的略有不同的版本。如果您解压缩这些档案中的任何两个并对结果进行比较,我希望您会发现差异大约是档案总大小的 1%。
这些档案实际上是 JAR 文件,但压缩细节——我相信——无关紧要。但这解释了,以特定压缩格式提供这些档案是不可协商的:这是服务器的基本目的。
就其本身而言,为这些档案的内容安装差异存储对我来说不是问题,从而大大减少了档案集的磁盘占用空间。有很多方法可以做到这一点,使用增量编码或理解共享的压缩文件系统(例如,我相信btrfs理解块共享,或者我可以使用快照来强制执行它)。
问题是,我如何从这些文件中生成压缩的 zip?我拥有的服务器的计算能力非常低,当然不足以从块共享内容中即时重新创建 JAR 。
是否有一种编程方式将未压缩级别的共享内容公开给压缩级别?一种易于翻译为 zip 的增量压缩格式 ?
我应该寻找一种缓存解决方案以及动态生成 JAR 吗?这至少会减轻生成请求最多的 JAR 的计算痛苦。
有专门的硬件可以非常快速地产生拉链,但我宁愿避免花费。随着对服务器的请求数量的增长,它也不是一个非常可扩展的解决方案。