文件上传下载性能优化

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

上传下载接口

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上传下载模块实现,包括监听每个文件下载任务的进度,任务是否暂停,下载是否完成等状态情况。

相关推荐
贾伟康8 小时前
【HarmonyOS 7新能力|028】Core Vision Kit工程封装:把接入逻辑放进可维护的分层结构
计算机视觉·harmonyos·arkts·端侧ai·harmonyos 7
爱喝水的鱼丶9 小时前
SAP-ABAP:MM 模块库存管理开发:出入库增强、批次管理与库存盘点功能开发
性能优化·sap·abap·增强·开发运维·经验交流·mm模块
马剑威(威哥爱编程)10 小时前
【共创稿事节】HarmonyOS 7 互动卡片实战:摇一摇触发静态转动态,前景元素出框
华为·harmonyos
贾伟康10 小时前
【HarmonyOS 7新能力|029】3DGS工程封装:把接入逻辑放进可维护的分层结构
harmonyos·arkts·三维重建·3dgs·harmonyos 7
马剑威(威哥爱编程)10 小时前
【共创稿事节】HarmonyOS 7 闪控窗实战:标准悬浮窗、侧边栏暂存与闪控球一键切换
华为·harmonyos
AI服务老曹10 小时前
告警回调不是配上就能跑:性能优化里的关键参数(视频分析接入飞书告警实践)
性能优化·ai视频分析告警接口·告警回调
贾伟康11 小时前
【HarmonyOS 7新能力|019】平行视界入门实战:从能力边界到最小可运行链路
harmonyos·arkts·arkui·harmonyos 7·平行视界
技术任我行XTing12 小时前
【DFX系列】Flutter 鸿蒙应用外接纹理介绍及问题定位
flutter·harmonyos
三翼鸟数字化技术团队12 小时前
WiFi-DensePose × OpenHarmony 智慧家居融合
harmonyos
HarmonyOS_SDK12 小时前
AI 赋能 Push Kit 场景化消息开发,高效完成鸿蒙应用推送能力接入
harmonyos