md5加密spark-md5

计算md5值,整个文件计算或者分片计算

在前端开发项目中,通常使用spark-md5库来生成md5值。有两种方法,一种是直接将整个文件传入,直接返回文件的md5。这种方法对于小文件会比较有优势,简单而且速度超快。

另一种方法是利用js中File对象的 slice() 方法( File.prototype.slice )将文件分片后逐个传入 spark.appendBinary() 方法来计算,最后通过 spark.end() 方法输出md5。分片计算md5,对于大文件和超大文件会非常有利,不容易出错,不占用大内存

注意:
1.1G左右的文件,分片Md5计算的耗时大概是整个文件Md5计算的一半,文件越大越明显
2. 大文件(大于4G)一定要分片计算Md5值,原因:大文件一次性计算Md5有时会遇到卡死现象或者没有响应,原因是FileReader是 JavaScript 中用于读取文件内容的 API,在使用FileReader读取大文件(大于4G)时,它将整个文件加载到内存中进行处理,而大文件可能会超出浏览器的内存限制,导致浏览器崩溃或运行缓慢。因此,对于大文件(大于4G)需要分片计算Md5值
3. 再进一步优化就是放在web worker中计算,因为文件的MD5值计算是纯运算,将阻塞JS主线程的运行,在文件较大时,计算过程将使得浏览器长时间处于无响应状态而web-worker与JS处于不同的线程,相互并不阻塞,因此可以将一些耗时的纯运算放在web-worker中进行,等待完成后通知到JS主线程

整个文件计算md5(适用于小文件)

在这里插入图片描述

分片计算md5(适用于大文件)

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我还是我…

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值