提高axios获取下载速度

2023-11-30

我在用axios从 Azure 存储 Blob 下载文件 (~100MB)。

axios({
  method: 'get',
  url: uri,
  onDownloadProgress: (progressEvent) => {
    console.log("Loaded: " + ((progressEvent.loaded / progressEvent.total) * 100) + "%"); 
  },
  responseType: 'arraybuffer'
}).then({})

我的问题是实际下载文件需要相当长的时间(约 10 分钟)。我以前使用 fetch() 甚至比这慢(约 15-20 分钟)。对于如何加快下载速度,你们有什么建议吗?我的网速不是问题,因为直接下载文件或使用 Azure 存储资源管理器(1.12.0、AzCopy 10.3.3)下载文件只需不到 2 分钟。

我还尝试使用 azure-storage 的 blobServiceClient,但获得了与 axios 和 fetch 相似的速度(大约 15kbps)。

如果有帮助的话,这是在 React 应用程序中。


我测试过下载速度。我希望我的结果对你有用。

  1. 我上传StorageExplorer.exe作为下载测试的源文件。文件大小为92.5M。

enter image description here

  1. 下载文件通过Azure Storage Explore,这将需要1 minute and 07 seconds.

enter image description here

  1. 通过chrome浏览器在portal中下载文件,需要58 seconds.

enter image description here

  1. 通过我的测试代码下载文件。

① 复制网址portal or Storage Explore.

enter image description here

网址如:https://p*****ge.blob.core.windows.net/testcontainer/StorageExplorer.exe

经过我的代码测试后,需要1 minute and 52 seconds而且很不稳定,有时测试下载时间会比较长。

② 复制网址AzCopy Command.

url格式如下:https://pan********ge.blob.core.windows.net/testcontainer/StorageExplorer.exe?se=2020-09-18T07%3A55%3A28Z&sp=rl&sv=2018-03-28&sr=c&sig=5kJyTBwHHRS******mlj3%2FWj9CmvQriXCMi4%3D

通过相同的代码测试后,需要1 minute and 02 seconds.

我的测试结论:

不要使用看起来像的网址https://p*****ge.blob.core.windows.net/testcontainer/StorageExplorer.exe.

您可以使用类似于从 AzCopy 命令获取的 url。

下面是我的测试代码。

  1. npm 我进步了
  2. npm 我 axios
'use strict'

const Fs = require('fs')  
const Path = require('path')  
const Axios = require('axios')  
const ProgressBar = require('progress')

async function download () {  
  const url =    'https://pan*****e.blob.core.windows.net/testcontainer/StorageExplorer.exe'

  console.log('Connecting …')
  const { data, headers } = await Axios({
    url,
    method: 'GET',
    responseType: 'stream'
  })
  const totalLength = headers['content-length']

  console.log('Starting download')
  const progressBar = new ProgressBar('-> downloading [:bar] :percent :etas',     {
      width: 40,
      complete: '=',
      incomplete: ' ',
      renderThrottle: 1,
      total: parseInt(totalLength)
    })

  const writer = Fs.createWriteStream(
    Path.resolve(__dirname, 'software', 'StorageExplorer.exe')
  )
  data.on('data', (chunk) => progressBar.tick(chunk.length))
  data.pipe(writer)
}

download()

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高axios获取下载速度 的相关文章

  • 玩笑错误反应组件上出现意外标记

    我收到了意外的令牌React Component Name在跑步的时候npm test 尝试阅读其他几个类似的问题 但似乎没有一个对我有用 我在下面添加了 babelrc package json 和我的测试文件内容的内容 presets
  • 将 async 和await 与export const 一起使用

    我无法完成这项工作 它说 await 是一个保留字 是的 当然是 而且我想使用它 怎么了 export const loginWithToken async gt return dispatch gt dispatch type SESSI
  • 使用react redux获取删除请求方法不删除

    我正在尝试使用 fetch 删除请求方法来使用 React redux 删除本地主机服务器中的项目 调用方法 deleteItem e e preventDefault const id this props id this props d
  • 使用 useState 更新状态时功能组件不更新 DOM

    EDIT 代码笔在这里https codepen io mark kelly the looper pen abGBwzv https codepen io mark kelly the looper pen abGBwzv 我有一个显示
  • CRA 的 src 之外的测试文件夹?

    我为我创建的应用程序编写测试npx create react app template typescript但我不知道如何将测试文件保存在组件旁边或单独的文件夹中test 我想我应该创造test文件夹外src src App tsx etc
  • 从 Context Provider 重定向 React Router

    我是 React Router 的新手 并尝试使用新的 Conext API 从提供程序内部进行重定向 基本上我的提供者看起来像这样 AuthContext js class AuthProvider extends React Compo
  • 找不到 -lDoubleConversion 的库

    我尝试在 XCode 上构建 但是ld library not found for lDoubleConversion发生错误 我可以建造react native run ios 这可行 但 XCode 无法构建 ld 警告 找不到选项 L
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Mobile Safari 在 play() 时跳过 HTML 音频的前几秒

    我有一个 React Audio Player 它使用 useAudio 挂钩来管理 HTML5 音频 除了 Mobile Safari 之外 它在任何地方都可以正常工作 在 Mobile Safari 中 声音会在播放器开始播放后几秒钟开
  • 如何解密会话令牌(Next-auth JWT 令牌)

    我正在我的下一个应用程序中控制用户身份验证next auth library 我正在使用credentials provider 首先 我调用返回用户信息的登录端点 然后获取访问令牌并将其放入由next auth callback 这是我的
  • 使用 Webpack 代理创建 React 应用程序中的 WebSockets

    我使用版本 3 1 2 2019 年 9 月 19 日 中的 Create React App 创建了我的 React 应用程序 我试图为 Web Socket 请求配置代理 但似乎当我使用代理时 未建立连接 我用过THIS https g
  • React延迟加载/无限滚动解决方案

    我花了一段时间才弄清楚如何使用优秀的延迟加载图像React Lazyload 组件 https github com jasonslyvia react lazyload 演示在滚动时延迟加载图像 但在测试时我无法获得相同的行为 罪魁祸首是
  • Relay 中的嵌套片段数据始终相同

    我是 Relay 新手 并且遇到了片段上嵌套数据的问题 当我在 graphiql 中进行测试时 以下查询返回正确的数据 因此我确信我的架构是正确的 viewer customers name billing address city 但是
  • 计算行:如何使用 AG Grid 根据同一列中其他行的值计算特定列的单元格值?

    我想使用同一列中其他行的值对特定行实施自定义计算 我发现AG Grid提供了定义的能力列定义表达式 https www ag grid com javascript data grid cell expressions and aggFun
  • React Hook“useSelector”在函数中被调用

    我无法弄清楚 useSelector 发生了什么 我需要一点帮助 ERROR React Hook useSelector 在函数 render user 中调用 该函数既不是 React 函数组件 也不是自定义 React Hook 函数
  • 无法在scrollView中滚动

    我有一个屏幕 我可以在输入字段中输入内容并获得相应的搜索结果 该列表在 ScrollView 中呈现 但当键盘打开时 在 Android 中 它仍然不允许我滚动 我怎样才能解决这个问题 return lt gt addressesFound
  • Azure无法访问React Web应用程序中的env变量

    几年前我看到有一个类似的问题 但超链接答案已被微软关闭 我有一个使用 create react app 创建的 React 应用程序 它已经部署到heroku并加载一些环境变量来访问谷歌地图等 这一切对于heroku来说都工作得很好 我已经
  • 将 ESLint 与 Airbnb 样式和选项卡结合使用 (React.js)

    我正在开发一个 React js 应用程序 并且正在尝试检查我的代码 我将 ESLint 与 Airbnb 风格一起使用 但出现以下错误 src Test jsx 4 2 error Unexpected tab character no
  • 需要根据用户选择有条件地渲染具有 X 行数的部分

    我有一个反应组件 其中包含一个下拉列表 其中的选项包括none 1 5 and 13 根据用户选择的数字 我需要渲染一个部分 其中包括许多行 每个行都有字段名称和下拉列表 如果用户不选择任何一个 我需要整个附加配置部分消失 新部分中的每个下
  • Axios GET 返回不可读的响应

    我有一个带有 axios 1 2 0 的简单 GET 的 Express 应用程序 const result AxiosResponse await axios get https jsonplaceholder typicode com

随机推荐

  • System.Timers.Timer生命周期

    哪种方法是使用 System Timers Timer 的正确方法 我的意思是 我创建计时器 设置间隔以及在 Elapsed 事件上调用的方法 double ms 1000 var t new System Timers Timer ms
  • 连接到 Firebase 时 Android 应用程序崩溃

    我正在尝试连接到我的 Firebase 应用程序 但当我使用应用程序 URL 初始化 Firebase 时 应用程序崩溃了 以下行给出错误 Firebase myFirebaseRef new Firebase https firebase
  • x86 汇编 - 4 个给定数字中的 2 个最大值

    我正在用汇编程序编写一个 C 子例程 它需要从传入的 4 个值中找到 2 个最大值 并将它们相乘 我正在努力寻找最大值 但我有点卡住了 我有这个来找到最大值 但我似乎无法推理如何获得第二高值 任何建议 将不胜感激 first push bp
  • 高效检查多个命令的 Bash 退出状态

    对于多个命令 是否有类似于 pipelinefail 的东西 例如 bash 中的 try 语句 我想做这样的事情 echo trying stuff try command1 command2 command3 在任何时候 如果任何命令失
  • 在 DateTime 比较期间,如何强制实体框架使用 datetime 而不是 datetime2?

    我正在使用实体框架来检索记录 其中一个过滤器是datetime 它生成如下查询 Extent1 TxnDateTime gt convert datetime2 2015 02 21 00 00 00 0000000 121 AND Ext
  • 如何在 Mongo 的 update() 函数中使用 $add ?

    我正在尝试更新此文档 dealId 201 commitCount 3 我只需要增加commitCount1 所以我尝试在 update 中使用 add 函数 但我无法让它工作 db deal update dealId 201 set c
  • 相乘值的总和

    我有一个相当复杂的 XML 文件 我需要使用 XSL 对其中的一些值进行加权平均 我能够完成权重或值的总和 但我无法使乘法起作用 我收到错误 XPTY0004 不允许将多个项目作为第一个项目 的操作数 我无法共享 XML 但我已将 XML
  • GWT-请求的资源上不存在“Access-Control-Allow-Origin”标头

    我们正在尝试在 tomcat 上实现 CORS 过滤器以允许跨域请求 我们有两个 GWT 项目 分别位于两个不同的 tomcat 不同的机器 上 阅读完CORS过滤器文档后CORS 我刚刚在tomcat的web xml文件中添加了CORS过
  • utf8' 编解码器无法解码字节 0xae

    我刚刚发现我的json字符串包含一些特殊字符 例如Pandora 我收到这个错误 utf8 codec can t decode byte 0xae in position invalid start byte当我使用这个时 json lo
  • 为什么我无法从 resx 文件加载图像资源?

    我有一个控件库 我已将 resx 文件添加到其中 ImageResources resx 它包含两个我随后添加的 png 图像 在同一个库中 我有一个控件 可以加载几个图像来进行一些自定义绘图 但我似乎无法加载资源 void GTableL
  • OpenMP 圆周率计算的并行化要么很慢,要么是错误的

    我在并行化我的蒙特卡罗方法来计算 pi 时遇到问题 这是并行的 for 循环 pragma omp parallel for private i x y schedule static reduction count for i 0 i l
  • 为什么第一次运行总是慢很多?

    我编写了一个宏来报告运行给定操作所需的时间 它运行多次并打印出每次运行的时间 以纳秒为单位 第一次运行总是比后续运行花费更多的时间 为什么会这样 这是 10 x 10 次运行的结果 计时Thread yield gt dotimes x 1
  • 在 C++ 黑客游戏代码中保留地址? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有这段代码可以编辑游戏中的地址以获得无限的弹药等等 我发现每台计算机的地址都是不同的 有时每次重新启动游戏时 所以我如何设法使这项工作仍然有效他们改变了 堆中记录内容的签名匹配
  • AlarmManager 调用的通知活动在应用程序关闭时不会弹出

    对于自定义提醒应用程序 我正在使用AlarmManager and PendingIntent为我设定一个具体的时间Notification弹出 我有我的NotificationManager in ReceiverActivity Ove
  • 如何使用 JCA 读取 BouncyCastle 私钥 PEM 文件? [复制]

    这个问题在这里已经有答案了 在我们的应用程序之一中 私钥是使用 BouncyCastle 的 PEMWriter 存储的 目前我正在研究是否可以摆脱 BouncyCastle 依赖 因为 Java 7 似乎拥有我们需要的一切 唯一的问题是我
  • DB2 独特 + xmlagg 查询

    我想要相当于 DB2 中 MySql 的 GROUP CONCAT 功能 我尝试过 DB2 的 XML Aggregate 函数来合并 murows SELECT a ID substr xmlserialize xmlagg xmltex
  • 使用未分配的局部变量

    我在编写从十六进制到二进制 十进制到二进制等的转换器时遇到问题 这是我的代码 当我调试它时 我遇到了错误 使用未分配的局部变量 Dec Int10 你可以帮帮我吗 我该如何修复这个错误 protected void Button Click
  • PYQT5 线程与计划和计时器的问题

    我在用PYQT5构建一个 GUI 我正在使用APScheduler管理我想要运行的工作 我将调度程序项目和计时器项目分解为自己的类 然后将它们连接到主文件中 我遇到的问题是一旦计时器完成一个周期 我尝试添加时间Timer类并在调度程序再次运
  • 返回具有最高值的变量?

    我有 3 个变量 num1 num2 和 num3 每个代表表列所具有的行数 我想找到哪个变量具有最高的变量 这样我就可以在for循环 如下所示 for row 1 row lt HIGHEST VARIABLE row 这可能已经得到解答
  • 提高axios获取下载速度

    我在用axios从 Azure 存储 Blob 下载文件 100MB axios method get url uri onDownloadProgress progressEvent gt console log Loaded progr