我有一个功能允许用户创建项目并在此页面上查看它。他们可以导入资源(pdf、img 等)以与他们的项目一起保存。所以现在我想创建一个功能,允许用户导出他们所有的东西,以及与他们在同一组中的那些人,它们都整齐地用漂亮的丝带绑在一个 zip 文件中。
目前我正在使用 Archive:Zip 抢先压缩文件,保留他们的 CRC32 校验和并将其作为每日 cronjob 运行以减少用户等待时间。但是,如果对任何文件有任何更改,我将不得不重新运行整个过程。
我的初始基准测试显示 103MB 的文件最多需要 47 秒才能运行。该过程涉及生成将它们链接到 XSL 的 XML、复制图像、用于 iframe 的 html 等等。
我正在考虑创建一个表或文本文件,以将所有文件的 CRC32 校验和或上次修改日期保存在临时存储区域中,并在每次用户单击导出时与此列表进行比较,如果有任何新文件,我将从缓存的 zip 文件中删除相同的文件并添加新文件。或者我将保留所有松散的文件并复制和替换较新的文件,然后在每次单击时进行存档。
我的问题是:
- 这是否被认为是一种不成熟或糟糕的优化技术?
- 我应该如何正确优化这个?
- 对于这些优化技术,我可以学习一些书籍或资源吗?