refactor: 使用 JSZipp 替换 jszip 处理 ZIP 文件#1479
Conversation
|
@CodFrm JSZIP打包出来的,里面有些档案包含这个,有些没有 如果要保留这个东西, fflate 会全部档案都加这个 待这个处理好再取消 draft |
只是一个注释,你用某些zip管理器打开,你可以看到右侧有这个评论 |
This comment was marked as outdated.
This comment was marked as outdated.
c902cc7 to
4a99319
Compare
|
#1489 修正 |
做了一个全新的 JSZipp
测试:
这个PR用的是预设压缩设定,modifiedDate 是用完整UTC时间,而不是DOS本机时间 我不是用web worker做法。而是用更高效的iterative compression, 不但壓縮快,而且內存負擔小。 |
好吧,虽然我觉得fork/pr现有的库去做更好,但是你已经折腾出来了,也没关系 我实际验证了一下,这个 PR 用 本地跑过:
benchmark 我也看了你的页面,并在本地按类似数据分布补了一轮。页面默认是
所以如果只看压缩速度,fflate 还是更快;但 JSZipp 明显快于 JSZip 和 zip.js。体积方面 compact/Dos only 表现最好,default 因为会写 UTC extra field,体积会略大。 内存也补测了,每个库独立进程跑同类场景,
所以“内存负担小”这个点本地结果是支持的。
剩下主要有两个点建议处理:
|
本来在fflate提交了PR,但原来问题都持续超过一年都没好好处理。认真研究才发现细节实现很差。例如根本没想过档案量和单档大小的问题。从根本开始就没考虑,fork也要大改。作者也不太接受AI代码。 也想试试看用AI从头开始设计整个library以至实现,能做到怎么样。反正这种东西做了出来后没bug就不用更新。 结果做出来的东西我很满意呀。( 当然要把代码压缩到极限还是要靠人脑处理。) |
😄 AI 真是太好用了 |
Checklist / 检查清单
Description / 描述
本 PR 将项目中的 ZIP 处理逻辑从
jszip迁移到 JSZipp(web-jszipp),以减少对jszip及其相关依赖的使用,并统一 ZIP 文件的读写、打包和时间戳处理。主要变更:
web-jszipp依赖,移除jszip及其相关依赖。src/pkg/utils/jszip-x.ts,基于 JSZipp 实现兼容现有调用方式的 ZIP 封装。scripts/pack.js,使用 JSZipp 的ZipWriter生成 Chrome / Firefox ZIP 包。string和Blob内容。jszip的时区偏移补偿。comment字段支持。nodeStream支持。Remarks
Screenshots / 截图