Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
基于HTML5技术的文件上传 By 廖学芝 WebUplader上传组件分享
Slide 2
Slide 2 text
功能演示
Slide 3
Slide 3 text
文件上传方式 • 文件表单 • 文件表单 + IFRAME • FLASH • HTML5 ✗ ✗
Slide 4
Slide 4 text
HTML5 VS FLASH 功能描述 FLASH HTML5 多选 ✓ ✓ 格式过滤 ✓ ✓ 拖拽 ✗ ✓ 截屏粘贴 ✗ ✓ Cookie & Session ✗ ✓ 文件读取速度 ✓ ✓ 150% faster 图片预览&裁剪 ✓ ✓ 200% faster 文件上传 ✓ ✓ 10% faster 进度跟踪 ✓ ✓ 更加精准 以下是与文件上传相关的功能对比图。
Slide 5
Slide 5 text
可以放心使用HTML5吗?
Slide 6
Slide 6 text
当然可以! HTML5: 62%
Slide 7
Slide 7 text
性能优化 • 上传前的优化 • 上传过程中的优化
Slide 8
Slide 8 text
上传前优化选型 • 图片压缩。 – 5M jpeg(5184×3456) => (1600x1600) 407KB 压缩比7%。 • ZIP合并小文件。 – ZIP效率低,仅使用与2G网络。 • 合并小图片。 – 运算快10倍于zip, 总体20%提速。 ✓
Slide 9
Slide 9 text
普通的文件上传问题 • 单一文件上传速度不理想。 • 网络不稳定,导致重传。
Slide 10
Slide 10 text
不同并发对比图 0 50 100 150 200 250 1 2 3 4 5 6 并发越多,速度越快。
Slide 11
Slide 11 text
最佳并发数 • 更多的并发会增加服务端压力。 • 不要高于浏览器允许的最大并发数。 • 并发数从3开始收益逐渐下降。 浏览器 http1.1 http 1.0 IE 6, 7 2 4 IE8 6 6 Firefox2 2 8 Firefox3 6 6 Safari 3, 4 4 4 Chrome 1, 2 6 ? Chrome 3 4 4 Chrome 4+ 6 ?
Slide 12
Slide 12 text
为什么并发更快? • 多请求抢占带宽。 • 跨域时,并发可以共用options验证请求。 • 服务器端可能针对单一请求限速。
Slide 13
Slide 13 text
普通的文件上传问题 • 单一文件上传速度不理想。 – 采用并发。 • 网络不稳定,导致重传。 – 采用分片
Slide 14
Slide 14 text
什么是分片上传? 大文件 分片1 分片2 分片3 分片3 分片4 分片5 分片6
Slide 15
Slide 15 text
还有哪些优势? • 更强的容错能力。 • 可以模拟暂停与继续。 • 利用并发提速。 • 更精准的速度跟踪。
Slide 16
Slide 16 text
分片带来的额外开销情况 0 20 40 60 80 100 120 不分片 5M 4M 3M 2M 1M 768K 512K 256K 时间花费(秒) 以下是在网络比较畅通的情况下,通过并行上传3个33M大小的文件得出 的数据。
Slide 17
Slide 17 text
• 分片越小,请求数越多,开销越大。 • 分片越大,灵活度越小。 • 整数倍client_body_buffer_size (n x 256K)。 选择合适的分块大小 推荐2M - 5M!
Slide 18
Slide 18 text
有了分片,我们还能用来实现什么? 如果能让服务端记住每个已成功上传的分片,客户端可选 择跳过这类分块上传,我们就能实现断点续传。 收益 • 节省流量,避免上传重复的分块。 • 减少用户等待时间。 • 可恢复的上传。
Slide 19
Slide 19 text
如何标识一个分块? 文件名 + 分块编号? 文件名 + 文件大小 + 分块编号? 文件名 + 文件大小 + 修改时间 + 分块编号? 不精准,采用MD5分块内容。
Slide 20
Slide 20 text
分片可以秒传,那么整个文件呢? MD5时间花费表(秒)。 0 2 4 6 8 10 12 14 16 2M 5M 10M 20M 50M 100M 150M 200M
Slide 21
Slide 21 text
• 验证过程提前到当前文件的传输期。 • 小文件优先处理,减少用户等待时间。 • 更换序列化算法,取段MD5。 从算法上去优化
Slide 22
Slide 22 text
总结 功能演示 HTML5 VS FLASH 图片压缩 并发与分片上传 断点续传与秒传
Slide 23
Slide 23 text
Thanks WebUploader: http://fex.baidu.com/webuploader/ Zip调研: https://github.com/fex- team/webuploader/tree/research/experiment/zip SPRITE调研: https://github.com/fex- team/webuploader/tree/research/experiment/sprites 上传调研: https://github.com/fex- team/webuploader/tree/research/experiment/