当前位置: 首页 > 知识库问答 >
问题:

提高 axios 获取下载速度

公冶威
2023-03-14

我正在使用 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 Storage Explorer(1.12.0,AzCopy 10.3.3)不到两分钟。

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

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

共有1个答案

魏臻
2023-03-14

我已经测试了下载速度。我希望我的结果能对你有用。

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

①从< code>portal或< code>Storage Explore复制Url。

url类似于:https://p****ge.blob.core.windows.net/testcontainer/StorageExplorer.exe

在我的代码测试后,它将花费<code>1分52秒

②从AzCopy Command复制Url。

url格式如下:< code > https://pan * * * * * * * * ge . blob . core . windows . net/test container/storage explorer . exe?se=2020-09-18T07:55:28Z

用相同的代码测试后,它将花费1分02秒

我的测试结论:

不要使用类似于<code>的url:https://p****ge.blob.core.windows.net/testcontainer/StorageExplorer.exe。

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

下面是我的测试代码。

  1. npm i进度
  2. npm i 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()
 类似资料:
  • 本文向大家介绍如何提高javascript加载速度,包括了如何提高javascript加载速度的使用技巧和注意事项,需要的朋友参考一下 方法如下: 1、将所有<script>标签放在尽可能接近<body>标签底部的位置,以保证页面在脚本运行之前完成解析尽量减少对整个页面下载的影响 2、限制页面的<script>总数也可以改善性能。每当页面解析碰到一个<script>标签时, 紧接着有一段时间用于代

  • 我正在开发一个应用程序(为Android和iPhone)。实际上,在我的应用程序中,我必须在后台下载很多视频(使用后台服务,IntentService),以及我有一个屏幕显示下载的进度(使用一个活动,有UI显示下载进度)。但我不知道为什么下载速度比iPhone中的相同应用程序的下载速度要慢得多。 此外,每次下载视频后,我会在数据库中标记该视频为下载。所有视频都会发生这种情况。 数据库调用是Andr

  • 我们有一个物联网应用程序,可以接收Kafka上的数据,并将其保存在rdbms中。我们使用的数据库(MemSql)每秒支持20000多个插入。但我的常规存储库。保存方法我每秒只能实现50次插入。我编写了一个简单的代码,正在高速网络aws ec2实例上进行测试 这需要20秒才能完成。我希望达到每秒约1000k的插入。如何提高这种摄取速度?我应该创建一个大小为1000的线程池并从单独的线程调用save吗

  • 与malloc'相同大小的内存和手动读取整个文件到malloc'区域相比,这有什么不同?

  • 我正在编写一个Java应用程序(使用NetBeans作为IDE和jFrame表单),其中一部分下载一个文件。我如何用下载的当前进度更新进度条,或者至少获得另一个线程中当前下载的字节总量? 下面是我的一部分代码:

  • 本文向大家介绍python中提高pip install速度,包括了python中提高pip install速度的使用技巧和注意事项,需要的朋友参考一下 pip install命令默认是用的是python官方源,由于一些客观原因,连接速度很慢,甚至超时中断,到时很多模块安装不上,甚是苦恼! 怎么办? 使用国内镜像源,将以下命令完成拷贝出来,粘贴至记事本中,保存为bat文件,双击执行该批处理文件。 然