Azure Blob Storage ช้าโดยใช้ FileStreamResult Controller.File

ฉันมีเว็บไซต์ ASP.NET ที่ทำงานบนบัญชี Azure Web Apps ฉันยังมีบัญชีที่เก็บข้อมูลโดยใช้โหมดบล็อกหยด

ฉันอัปโหลดไฟล์วิดีโอที่มีขนาดเพียงประมาณ 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);
    }

person user856232    schedule 02.06.2016    source แหล่งที่มา
comment
คุณสามารถแชร์รหัสสำหรับวิธี GetBlob ได้ไหม ฉันยังใส่คำตอบที่อาจช่วยคุณในการระบุปัญหาความเชื่องช้า   -  person Gaurav Mantri    schedule 02.06.2016


คำตอบ (1)


ไม่ใช่คำตอบสำหรับคำถามของคุณจริงๆ แต่เป็นบางสิ่งที่คุณสามารถทำได้เพื่อระบุตำแหน่งของปัญหา

ตามที่ฉันเข้าใจ มีสองสิ่งที่เกี่ยวข้องที่นี่: การดาวน์โหลด blob จากที่เก็บข้อมูล blob ไปยังเว็บเซิร์ฟเวอร์ของคุณ และการดาวน์โหลดไฟล์จากเว็บเซิร์ฟเวอร์ของคุณไปยังเบราว์เซอร์ของคุณ ฉันเชื่อว่าก่อนอื่นเราต้องแยกแยะว่าปัญหาของความเชื่องช้าอยู่ที่ไหน

หากต้องการดูว่ามีปัญหาในการดาวน์โหลด blob จากที่เก็บข้อมูล blob ไปยังเว็บเซิร์ฟเวอร์ของคุณหรือไม่ คุณสามารถใส่ตัวจับเวลาในวิธี GetAttachmentStream ของคุณ หรือคุณสามารถใช้ OperationContext คลาสในไลบรารี Azure Storage ชั้นเรียนนี้มีสมาชิก StartTime และ EndTime คน ซึ่งสามารถบอกคุณได้ว่าคำขอใช้เวลานานเท่าใด

คุณสามารถทำสิ่งเดียวกันกับโค้ดที่ส่งเนื้อหาไปยังเว็บเซิร์ฟเวอร์ของคุณ ที่ด้านหน้าของเว็บเซิร์ฟเวอร์ อาจมีหลายอย่างที่อาจส่งผลต่อความเร็วในการดาวน์โหลดของ Blob

person Gaurav Mantri    schedule 02.06.2016