问题描述
想通过前台计算上传文件md5值,然后后台搜寻匹配该md5值,来验证服务器是否存在该文件。但是我试了以下,前台计算md5值太慢了,每片2MB,一个2G的文件大概需要计算将近两分钟,用户体验貌似不是很好。不知道有没有方法能提高前台md5计算速度呢?
解决方案
解决方案二:
既然前端没有预先计算好的md5值,花时间计算是在所难免的。你可以在你的服务器端保存的文件的基础上,同时保存其“第一片的md5”,甚至只需要保存前100k的数据的md5即可。这样可以让大部分最终要失败的比较,提前失败。
解决方案三:
实际上,你的服务器端,可以保存个个“片”为基础数据,而所谓的“文件”则是按照“片集”来组织的。没有必要比较两个文件是否相同,在服务器端对于相同内容的文件也生成不同的“片集”,这样也花不了多少时间(因为当年你的前端对于每一个“片”计算md5的时候,直接发给服务器就行了)。比如果对于2G的文件与另外一个2.1G的文件相比,可能只有最后20M是有改变的,那么就不需要上传多余的“片”内容。
解决方案四:
谢谢,你说的很有道理。我现在想做的是在文件上传之前来通过md5或者是SHA3(好像越来越多人用这个?我不了解这两个有什么区别。)来验证服务器是否已经存在该文件。因为通过这样的验证我就能跳过上传阶段,直接将现有的文件与这位用户联系起来,从而实现秒传的假象。而且因此,磁盘空间也避免了不必要的冗余。或许我可以像你说的那样,截取哪里的数据也好,我只要先截出来一小段,或者几小段,然后把文件大小这个数字也交给后台,是不是通过多项的匹配就可以节省前台计算的时间了呢?
时间: 2024-10-24 22:16:30