文件上传下载性能优化

客户端与服务器之间数据交换的效率取决于文件传输的性能。通过数据压缩断点续传可以实现文件传输和网络请求中的性能优化。这两种方式可以减少宽带占用,提高传输效率,从而达到提升数据交换性能。

上传下载接口

request模块主要给应用提供上传下载文件、后台传输代理的基础能力。

request模块的功能包括:

优化方案

  • 低网速上传琐碎文件场景用数据压缩
  • 大文件上传下载场景用断点续传

数据压缩

  • 有损压缩:仅限图片视频音频等文件适用。通过减少图片的分辨率, 降低音频的音质等手段。
  • 无损压缩
    • 对一些零碎文件可以使用 zlib(Zip模块)来进行打包压缩,减少上传请求次数;
    • 对一些大文件可以利用缓存技术,服务器将曾经上传过的大文件MD5码缓存起来,本地在上传前预生成MD5码并传输到服务器进行比对,如果相同则说明服务器存在该文件,可以跳过该文件上传,从 而省略重复传输时间。

断点续传

断点续传需要应用端和服务器端相互协作完成。

  • 应用端API:
    • fileIo(文件管理):用于处理文件上传操作,提供了读取文件内容,文件分片和组合的功能。
    • hash(文件哈希处理):用于实现文件MD5的计算,将计算的MD5值预先传到服务器端进行预处理,实现文件秒传,同时确保传输的准确性和可靠性。
    • request(上传下载):用于实现文件上传操作,并支持在上传过程中的断点续传功能。
  • 服务端技术:
    • 协议需要支持Range:用于在服务器端支持范围请求,方便处理文件上传下载断点续传功能。
    • 文件校验相关逻辑:需要实现校验文件是否有错,确保在传输中断后能够准确恢复并继续传输。

文件上传

对于大文件断点续传上传,本文采用request(上传下载)模块中的request.agent任务托管接口,可以自动实现暂停继续重试等操作,无需手动将文件分片和记录上传分片信息。

文件下载

对于大文件断点续传下载,也可以直接调用request.agent接口,该接口的断点续传是基于HTTP协议Header里的Range字段实现的,在任务暂停重启的时候,会自动设置Header中的Range字段,无需进行额外的配置。

Range简介

HTTP协议里面的Range字段,官方名称为范围请求,它允许服务器只发送 HTTP 消息的一部分到客户端,可以用来请求部分数据而不是整个资源。

Range的格式通常是Range: =-,其中表示范围所采用的单位,通常是字节(bytes), 和 表示请求的起始字节和结束字节的位置。

多文件下载监听

文件下载监听是指在单文件下载的功能基础上,同时进行多个文件下载进度和状态的监听管理。实际开发中,需要使用request上传下载模块实现,包括监听每个文件下载任务的进度,任务是否暂停,下载是否完成等状态情况。

相关推荐
得物技术5 小时前
得物 iOS 启动优化之 Building Closure
ios·性能优化
写雨.08 小时前
鸿蒙定位开发服务
华为·harmonyos·鸿蒙
斯~内克11 小时前
前端图片加载性能优化全攻略:并发限制、预加载、懒加载与错误恢复策略
前端·性能优化
goto_w12 小时前
uniapp上使用webview与浏览器交互,支持三端(android、iOS、harmonyos next)
android·vue.js·ios·uni-app·harmonyos
别说我什么都不会1 天前
ohos.net.http请求HttpResponse header中set-ccokie值被转成array类型
网络协议·harmonyos
无知的前端1 天前
Flutter 一文精通Isolate,使用场景以及示例
android·flutter·性能优化
人工智能培训咨询叶梓1 天前
LLAMAFACTORY:一键优化大型语言模型微调的利器
人工智能·语言模型·自然语言处理·性能优化·调优·大模型微调·llama factory
码是生活1 天前
鸿蒙开发排坑:解决 resourceManager.getRawFileContent() 获取文件内容为空问题
前端·harmonyos
计算机毕设定制辅导-无忧学长1 天前
HTML 性能优化之路:学习进度与优化策略(二)
学习·性能优化·html
鸿蒙场景化示例代码技术工程师1 天前
基于Canvas实现选座功能鸿蒙示例代码
华为·harmonyos