hello,我码神又回来了,这几天做个入门项目,有点头秃,开个小章来混混水,都做好了,发车了。
提到网盘大家都不陌生,小到小学生,大到中年大叔,大家可谓是对网盘又爱又狠,爱上网盘的便捷,恨上网盘的慢,慢,慢!!!今天我们就来聊一下网盘的爱恨情仇
1.网盘为什么能秒传?
首先我们来科普一下文件上传的知识
文件上传顾名思义就是把文件从本地电脑发送到存储文件的远程服务器上,小文件的上传倒没有什么好说的,主要考虑的是大文件上传怎么 更快、更稳定、更灵活、更快响应 等等,以提高用户的体验。
这里分享几个经典的大文件上传设计,包括文件分块、并发上传、断点续传、秒传、异步上传。
文件分块
既然小文件的处理相对容易,那不妨在发送前,把大文件分割为多个连续的小文件,一块一块地发送。
并发上传
将大文件分块后,就可以通过多线程并发上传,同时传输多个块:
串行上传和并发上传
要根据网络情况决定是否并发上传、同时并发上传多少个块,不是并发数越多越好。网络好的话,并发数量调大一些,能够大大提高文件整体上传效率;相反,盲目调整并发数,上传可能会更慢。
断点续传
对于大文件来说,推荐使用断点续传技术,在文件分块的基础上,服务器记录一下原文件对应的上传进度,每接收到一个块,就更新一下进度。这样,即使网络故障导致上传失败,也能从上传进度中知道哪些文件块已上传、接下来需要从哪一块重新开始了,而不用从第 1 块开始重新传输。
还有就是百度网盘的经典秒传
为什么其他上传都那么慢,百度网盘直接就能秒传了呢?
没错,真相只有一个,该文件已经被上传过了
上传文件前,先在客户端(比如浏览器)根据文件内容计算出文件的 MD5 值,相同内容的文件 MD5 值必然相同。然后在服务器已上传文件数据库中查找该 MD5 对应的文件是否已存在。如果不存在,上传文件并在上传成功后将该文件信息插入数据库,过程如下:
2.可能我们都对他的秒传没有什么太大的异议,可是那10K的下载速度实属恶心,那么我们接着就来讲一下为什么就几k的下载速度
哈哈,想要你开会员嘛!,我也要吃饭了,关注我
其实主要是如果不限速的话,前面说到文件都存在了自家的云服务器中,服务器可能一时间接收不了那么多访问,如果不限速服务器崩了,数据有丢失的风险,再者我们要记住这终究是款盈利性的软件,如果没有人开会员,盈利性怎么体现哪?