缓存存档文件的最佳方法是啥?

Posted

技术标签:

【中文标题】缓存存档文件的最佳方法是啥?【英文标题】:What's the best way to cache an archive file?缓存存档文件的最佳方法是什么? 【发布时间】:2008-11-17 01:32:06 【问题描述】:

我们有一个项目页面,其中包含用户文件、多媒体内容等,我们希望允许用户将所有这些内容导出到单个 zip 文件中。我们目前使用 unix 和 mysql 来存储所有这些,我们的主要目标是最大限度地减少所有处理和将所有文件编译成 zip 文件的加载/性能时间。

我的想法是将 zip 文件缓存到临时目录中,并将 zip 中每个文件的所有 CRC 校验和保存到单独的文本文件中。每次用户尝试导出时,我都会先检查每个文件的 CRC,并将其与列表进行比较,然后再从 zip 文件中添加或删除文件。

但我的另一个担忧是 zip 文件将占用的空间,因为我们可能有很多用户。

恕我直言,这可能是最愚蠢的方法, 那么你们中的任何人都可以提出一个更好的方法来处理这个问题吗?

谢谢 ~codeNoobian

【问题讨论】:

实际上还有一些额外的过程涉及获取一些 xml 以生成一些 html、复制图像文件等。用户将下载这个 zip 文件。所以我想尽量减少多余的工作。 【参考方案1】:

这意味着过早的优化,只需使用非常轻的压缩,也就是“最快”,如果真的有问题,请担心速度。

【讨论】:

【参考方案2】:

如果带宽/下载速度不是问题,我建议您使用未压缩的 tar 文件。 TAR 是一种非常简单的格式,因此当一些文件发生更改时,很容易编写代码来更新它的部分。此外,不压缩它会大大节省服务器 CPU 时间。

当然,不压缩会占用服务器上的大量存储空间。但是由于它是未压缩的,它可能完全不需要您保留文件的缓存副本,如果您可以足够快地构建它,您可以根据需要即时构建它。这样您也不必担心存储 CRC 和更新 TAR。

【讨论】:

【参考方案3】:

普通的声音和图像文件从一开始就被很好地压缩了,不是吗?可能值得查看您的有效负载,以了解您通过压缩购买了多少。

【讨论】:

以上是关于缓存存档文件的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

进行 AppEngine 模型内存缓存的最佳方法是啥?

处理缓存和浏览器后退按钮的最佳方法是啥?

在 bottle.py 中禁用 Jinja2 模板缓存的最佳方法是啥?

在 Elixir 中声明 zip 存档内容的最佳方法是啥?

存档/恢复所选詹金斯工作的最佳方法是啥

在 .jar 存档中存储和提取文件的最佳方式是啥?