Azure Blob存储缓慢使用FileStreamResult Controller.File

时间:2016-06-02 05:01:15

标签: performance azure download

我有一个在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);
    }

1 个答案:

答案 0 :(得分:0)

不是您问题的答案,而是您可以采取的一些措施来确定问题所在。

据我所知,这里涉及两件事:从blob存储器下载blob到你的web服务器,然后从web服务器下载文件到你的浏览器。我相信首先我们需要找出缓慢问题的地方。

要查看将Blob存储器中的Blob下载到Web服务器是否存在问题,您可以在GetAttachmentStream方法中放置计时器,也可以在Azure存储库中使用OperationContext类。这个班级有StartTimeEndTime个成员,可以告诉你请求花了多少时间。

您可以对将内容发送到Web服务器的代码执行相同的操作。在Web服务器方面,可能会有很多因素也会影响blob的下载速度。