2016-06-02 22 views
0

私はAzure Web Appsアカウントで実行しているASP.NET Webサイトを持っています。ブロックブロブモードを使用するストレージアカウントもあります。Azureブロブストレージが遅いFileStreamResult Controller.Fileを使用して

約9メガバイトのビデオファイルしかアップロードしません。アップロードに約10秒かかります。

次に、ダウンロードリンクを使用してユーザーにファイルの一覧を表示します。ダウンロードリンクをクリックし、ダウンロードしたファイルを「別名で保存」するとこの同じファイルをダウンロードするには30秒以上かかります。

これは非常に遅いです。それはわずか9メガバイトで、私は超高速インターネットを持っています。私は通常のサイトから毎秒> 3MB(メガバイト)以上のファイルをダウンロードできるので、9MBのファイルには約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

'GetBlob'メソッドのコードを共有できますか?遅さの問題を特定するのに役立つ可能性のある回答も入れています。 –

答えて

0

そうでもないあなたの質問への答えがありますが、問題がどこにあるかを識別するために行うことができますいくつかのもの:ここで

は、私は私のコントローラを介してストリームを返すために使用していたコードです。

私が理解しているように、BLOBストレージからWebサーバーにBLOBをダウンロードし、Webサーバーからブラウザにファイルをダウンロードするという2つのことがあります。私はまず、遅さの問題がどこにあるかを特定する必要があると信じています。

BLOBストレージからWebサーバーにBLOBをダウンロードする際に問題があるかどうかを確認するには、GetAttachmentStreamメソッドにタイマーを設定するか、Azure StorageライブラリでOperationContextクラスを使用できます。このクラスには、要求がどのくらいの時間を取ったかを示すStartTimeEndTimeのメンバーがあります。

コンテンツをWebサーバーに送信するコードでも同じことができます。 Webサーバーのフロントでは、BLOBのダウンロード速度に影響を与える可能性がある多くのものが存在する可能性があります。

関連する問題