我在使用 fetch("http://localhost:8001/api/login", {
method: 'post',
headers: {
"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: 'username=' + this.state.username + '&password=' + this.state.password
})
.then(function (responseObject) {
console.log('Request succeeded with Response object', responseObject);
})
.then(function (result){
console.log(result);
})
.catch(function (error) {
console.log('Request failed', error);
});
}else{
console.log('You must enter username, password.');
}
命令下载文件时注意到Azure虚拟机上的一些奇怪行为。似乎下载流是超级波涛汹涌的。通常,Azure VM会超快速地下载文件,因此不确定导致此问题的原因。该文件位于与VM相同的区域中的azure blob存储中。当我通过网络浏览器下载文件时,只需3秒钟。使用powershell需要大约一分钟!
以下是使用PowerShell完成网络的屏幕截图。
澄清一下,这是我用来下载文件的代码......
Invoke-WebRequest
我在天蓝色画廊的2016-Datacenter图像中使用了任何版本的powershell。
答案 0 :(得分:3)
是的,PowerShell cmdlet Invoke-WebRequest
下载文件比Web浏览器慢,因为每个字节报告的进度,开销都高于其他(Web浏览器)。
有关Invoke-WebRequest
速度的更多信息,请参阅answer of @jasongin。
如果你想通过PowerShell下载文件,也许我们可以使用WebClient Class,比WebRequest Class快,我们可以使用这样的命令:
$download = New-Object net.webclient
$download.Downloadfile($source_url, $local_url)
希望这有帮助。
答案 1 :(得分:1)
您没有显示有关如何使用Invoke-WebRequest的代码,或者您使用32对64位的代码。
来自一个类似的帖子,其中有一个接受的答案......
"问题是他将COM对象传递到另一个cmdlet - 在本例中为Select-Object。当发生这种情况时,我们尝试按属性名称绑定参数。枚举COM对象的属性名称非常慢 - 因此我们将86%的时间用于两个非常基本的CLR API调用:
(...)//从COM类型获取函数描述typeinfo.GetFuncDesc(index,out pFuncDesc); (...)//从COM函数描述中获取函数名称typeinfo.GetDocumentation(funcdesc.memid,out strName,out strDoc,out id,out strHelp); (...)
我们可以通过缓存在这里做一些聪明的事情。
解决方法是不管道进入Select-Object,而是使用语言功能: 从表中抓取行,跳过第一行(列标题)
$allRows = @($slotTable.getElementsByTagName("tr"))
$rows = $allRows[1..$allRows.Count]
但一般情况下,5.1及以下的Invoke-WebRequest速度很慢。在PoSHv6(Core)中它更快。尝试就是为自己看看。
有几篇文章专门讨论了Invoke-WebRequest的速度有多慢。
与Windows版本相比,Invoke-WebRequest速度似乎很慢,但事实并非如此 https://github.com/PowerShell/PowerShell/issues/5284 https://github.com/PowerShell/PowerShell/issues/2656 https://www.chasewright.com/invoke-webrequest-vs-system-net-webclient-download-speed