gpt4 book ai didi

reactjs - 提高 axios 获取下载速度

转载 作者:行者123 更新时间:2023-12-04 09:11:47 30 4
gpt4 key购买 nike

我正在使用 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. I upload StorageExplorer.exe as source file for download test. The size of file is 92.5M.

enter image description here
  1. Download file by Azure Storage Explore, it will took 1 minute and 07 seconds.

enter image description here
  1. Download file in portal by chrome broswer, it will took 58 seconds.

enter image description here
  1. Download file by my test code.

① 从 portal 复制网址或 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 .

My test conclusion:


不要使用看起来像 https://p*****ge.blob.core.windows.net/testcontainer/StorageExplorer.exe 的 url .
您可以使用类似于从 AzCopy 命令获取的 url。
下面是我的测试代码。
  1. npm i progress
  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()
enter image description here

关于reactjs - 提高 axios 获取下载速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63336999/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com