我有一个在Azure Web Apps帐户上运行的ASP.NET网站。我还有一个使用块blob模式的存储帐户。
我上传的视频文件只有9 MB左右。上传大约需要10秒钟。
然后,我通过下载链接向用户显示文件列表。当您点击下载链接时,"另存为"它下载的文件。它需要> 30秒下载同一个文件。
这非常慢。它只有9 MB,我有超快的互联网。我可以从普通网站下载大多数文件>每秒3MB(兆字节),所以我希望9 MB文件大约需要3秒钟。
以下是我用来通过我的控制器返回流的代码:
public Stream GetAttachmentStream(string attachmentId)
{
MemoryStream stream = new MemoryStream();
var storage = Storage.Instance("StorageConnectionStringLive");
storage.GetBlob(attachmentId, stream);
stream.Seek(0, SeekOrigin.Begin);
return stream;
}
public ActionResult GetFile(string id, string fileName, string mimeType)
{
var fileStream = GetAttachmentStream(id);
Response.AppendHeader("Content-Disposition", "inline; filename=" + fileName);
return File(fileStream, mimeType);
}
答案 0 :(得分:0)
不是您问题的答案,而是您可以采取的一些措施来确定问题所在。
据我所知,这里涉及两件事:从blob存储器下载blob到你的web服务器,然后从web服务器下载文件到你的浏览器。我相信首先我们需要找出缓慢问题的地方。
要查看将Blob存储器中的Blob下载到Web服务器是否存在问题,您可以在GetAttachmentStream
方法中放置计时器,也可以在Azure存储库中使用OperationContext
类。这个班级有StartTime
和EndTime
个成员,可以告诉你请求花了多少时间。
您可以对将内容发送到Web服务器的代码执行相同的操作。在Web服务器方面,可能会有很多因素也会影响blob的下载速度。