百度网盘 Web 端改版支持 HTML5 上传之后出现的严重问题

2015-12-17 23:14:00 +08:00
 jiagm
1 、出了什么事?
本月百度网盘的 Web 端改版,(至少在现代浏览器上)取消了上传控件以及 Flash 上传插件,而是改为 HTML5 上传。
这带来一个严重的问题:原本通过 Flash 上传插件虽然只能上传小于 1GB 的文件,但是不需要验证 MD5 。而现在强制需要验证 MD5 了。

2 、这怎么了?
在上传队列里添加一大堆文件,会同时验证 MD5 ,导致 CPU 占用率 100%,磁盘占用也会剧增。
这导致录制服务器压力非常大,甚至出现无法正常写入的情况。

3 、该怎么办?
暂且不说“恢复 Flash 插件”,但至少请提供一个选择,对于 1GB 以下文件不验证 MD5 。
我上传的所有文件都不可能在服务器上有,这样不但浪费时间,更导致无法正常使用百度网盘。

4 、为什么发在这里?
此问题通过邮件向百度网盘客服( baiduyunkefu@qq.com )以及我所知道的百度云项目的工作人员的邮箱反映不知道多少次,全部石沉大海。只能发在这了,希望有相关人士看到能转达这帮人。
如果要与我联系,请发邮件至 jiaguoming@jiagm.me 。

5 、百度网盘还有什么问题?
此次改版,之前就存在的问题仍然有好几个没有得到解决。
详见 http://www.jiagm.me/baidupan (问题编号 3~6 )。 2 解决了,其他全部照旧,已经过了一年半(一部分已经两年)。

--

另:个人分析涉及的文件部分
box-static/disk-system-cdn/pkg/plugin-upload_dcd62f6.js
此文件控制上传模块。 SWFUpload 以及 nativeUploader 这两个部分被注释掉了。

box-static/disk-system/widget/plugin/uploader/uploadUtil/h5Uploader/_nomd5_nomod_nopack/file.js
此文件负责将等待上传的文件交给计算 MD5 的 js 。

box-static/disk-system/widget/plugin/uploader/uploadUtil/h5Uploader/_nomd5_nomod_nopack/spark-md5.js
此文件负责计算 MD5 。
5830 次点击
所在节点    分享发现
27 条回复
avrillavigne
2015-12-17 23:33:51 +08:00
因为楼主博客网址用用火狐和 chrome 浏览器打开都是乱码,所以百毒的人没理
pynix
2015-12-17 23:36:17 +08:00
改版了? 8 秒破了吗?
7
2015-12-17 23:40:52 +08:00
看了楼主做的动图,这就是爱啊~~
jiagm
2015-12-17 23:47:30 +08:00
@avrillavigne 那个页面我只是把邮件原样转载了过去,所以没有声明编码。

@pynix 毫不相关……

@7 就这样还不解决呢。
V69EX
2015-12-17 23:51:33 +08:00
国安队的球迷?刮民档粉?
jiagm
2015-12-18 00:01:09 +08:00
@V69EX 好多年前的内容了,早就不再更新。
huangtao728
2015-12-18 00:07:56 +08:00
下午在腾讯云的 COS 上传一个 5G+ 的文件,算了好几分钟的 sha1 ,才开始上传,😂😱
yeyeye
2015-12-18 00:28:22 +08:00
@avrillavigne chrome 最新版稳定版 不乱码
binux
2015-12-18 00:44:00 +08:00
我猜算 md5 还有个作用是检测上传文件正确
jiagm
2015-12-18 02:06:55 +08:00
@huangtao728 类似的还有 Dropbox ,上传慢不说(而且是在墙外!),占 CPU 也非常高。

@yeyeye 已经补上编码的声明了,所以不会乱码。其实之前应该也可以自动识别不会乱码的……

@binux 其实就是为了它那个秒传。
Niphor
2015-12-18 08:55:56 +08:00
居然不是用自己厂里的 WebUploader 吗...
millson
2015-12-18 09:07:53 +08:00
把 md5 的计算放到客户端,减轻服务器压力?
BOYPT
2015-12-18 09:14:53 +08:00
传大文件居然不用客户端都是瞎折腾
aveline
2015-12-18 09:39:19 +08:00
我最近在做视频相关的服务, resumableUpload 是通过一直 append 到服务端的临时文件来做的。上传完成后会检验 MD5 来确认文件是否正确的 …… 不过说实话算个 MD5 也没要多久啊
Caringor
2015-12-18 10:04:37 +08:00
其實這樣做可以理解為保險的一步吧,客戶端算一次,然後上傳完畢後服務器端再算一次,校驗文件的完整性。
wesley
2015-12-18 10:10:17 +08:00
@millson html5 断点续传必须要把 md5 计算放在浏览器
其实百度要做的是把 md5 计算放到一个 worker 而里面,而不是主进程里
spance
2015-12-18 10:56:39 +08:00
比对 hash 再上传文件这本身就是他的业务核心之一,对于文件传输,在两端分别计算再比对 hash 这是非常合适的逻辑,不让他比 hash 怎么能知道文件是否已经存在、如何确定上传完了的文件是完整的?
这合适的不能再合适的逻辑,有什么问题?
hash 计算本身就是高密度计算,你还有并发执行,如果没有 cpu 100%那还真就是程序出问题了。
你吐槽去掉 Hash 是不明智的,更何况一个程序开始计算任务它并不会考虑此计算机上还有其它计算任务而是不是要让出 cpu 来,所以你需要的就是换换姿势-少量多次逐步操作,视你的机器能力而下达任务。
jiagm
2015-12-18 11:29:00 +08:00
@BOYPT 它的客户端一样计算 MD5 ,而且占用 CPUR 和 I/O 更厉害。


@spance 您没搞清楚问题之所在。问题的关键在于,之前 3 年多在 Web 端上传 1GB 以下文件都是不需要这一个动作,一直用得很好——可以同时开 2 个浏览器共 12 个标签页一起传。现在这样一搞,开一个标签页都不行,因为它的执行效率不是一般的差(客户端计算 MD5 虽然吃 I/O 好歹 CPU 占用不大,这个连 CPU 都大占特占),搞得根本就没法使用。所以,恢复 Flash 插件(做成可选项),或者至少提供一个选项不计算 MD5 ,是有必要而且必须的。
murusu
2015-12-18 11:50:29 +08:00
这个我之前弄过,如果要实现 html5 的断点续传必须得本地 hash ,要不然没法确定文件的状态
可是记忆中用 woker 来 hash 的话不会导致 cpu 占用 100%的,就是速度慢, 4G 多的东西也得几分钟
yksoft1
2015-12-18 12:22:34 +08:00
不过贾哥和我,@flyingharuka 在度盘的大多数文件都有个特点,几乎不可能有第二份
不过,最近给 @flyingharuka 搞得那个 IS-NITRO-CAPTURE 软件盘镜像居然度盘有,不知是哪个垃圾佬先传的
顺便说一下,最近雅虎上出现了一台 IS-CGB-EMULATOR 可惜一下子就到了敲诈价。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/244336

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX