[技术]前端性能最好的MD5工具库——flash-md5
三年前,因为我负责的某个平台需要实现上传iOS和Android的安装包的业务逻辑,考虑到安装包的大小和用户的网络情况,所以引入了断点续传的特性来保证用户体验。为了实现断点续传,需要考虑怎么确认文件的一致性,就涉及到在前端计算大文件的hash值。开源的方案(如:SparkMD5)几乎都是在浏览器的渲染进程上同步计算,当文件比较大的时候(1GB以上),计算的过程长且用户无法进行交互。
所以当时就快速通过Emscripten将OpenSSL中的MD5实现编译成WASM,结合WebWorker与渲染进程独立的特性,实现了一个前端上性能最好的MD5工具库的项目,性能整体表现跟各端(windows、MacOS、Linux)的默认命令行工具都在同一个数量级,计算耗时不会超过2倍。
之前一直以为这种在网页端计算大文件hash的诉求比较小众,直到今年有其他方向的同事找到我说有其它业务方向也需要用到同样的能力,我决心重新整理这个项目,做成开源的,也感谢这位同事给这个项目贡献了MD5计算状态中断与恢复的能力。
NPM:https://www.npmjs.com/package/flash-md5