文件上传下载性能优化

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

上传下载接口

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

相关推荐
行十万里人生2 分钟前
Qt 对象树详解:从原理到运用
开发语言·数据库·qt·华为od·华为·华为云·harmonyos
电子小子洋酱2 小时前
ESP32移植Openharmony外设篇(9)NB-IOT
单片机·物联网·华为·harmonyos·鸿蒙
北京迅为2 小时前
【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第1章 体验OpenHarmony—烧写镜像
人工智能·单片机·嵌入式硬件·harmonyos·鸿蒙
以山河作礼。4 小时前
极速探索 HarmonyOS NEXT:开启国产操作系统开发的新篇章
华为·harmonyos
微软MVP Eleven5 小时前
【朝夕教育】《鸿蒙原生应用开发从零基础到多实战》003-TypeScript 中的类
华为·typescript·harmonyos
m0_528723816 小时前
前端如何进行性能优化
前端·性能优化
敢嗣先锋18 小时前
鸿蒙5.0实战案例:基于WaterFlow的页面滑动加载
c++·移动开发·harmonyos·arkui·组件化·鸿蒙开发·页面布局
Huang兄18 小时前
鸿蒙-状态管理V2其他方法
harmonyos
关山月21 小时前
鸿蒙开发者高级认证-理论考试题(2025年02月)第一弹
harmonyos
东林知识库21 小时前
鸿蒙NEXT开发-用户通知服务
华为·harmonyos