我們嘗試實施一個download.aspx來控制我們的源代碼,例如特定客戶端的圖像。我們在download.aspx.cs中使用緩衝方法。代碼如下所示:使用download.aspx時緩慢加載圖像
using (var fs = new FileStream(_path, FileMode.Open, FileAccess.Read))
{
Response.BufferOutput = false; // to prevent buffering
byte[] buffer = new byte[1024];
int bytesRead = 0;
if (_file.Extension == ".pdf")
{
Response.AddHeader("Content-Disposition", "inline; filename=" + _file.Name);
}
else
{
Response.AddHeader("Content-Disposition", "attachment; filename=" + _file.Name);
}
Response.AddHeader("Content-Length", _file.Length.ToString());
Response.ContentType = ReturnExtension(_file.Extension.ToLower());
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
Response.OutputStream.Write(buffer, 0, bytesRead);
}
}
下載單個文件時效果很好。但是,在我們的情況下,我們嘗試同時加載約20張圖像。它變得非常緩慢。以下是捕獲的畫面: -
我們不能找出原因。我們想知道這是控制文件的一種實用方法,或者有其他更好的方法來實現它。
你不能使用靜態服務嗎? –
您是否試過單步執行此代碼以查看哪行最長執行?此外,請嘗試使用瀏覽器調試工具(網絡選項卡 - Internet Explorer中的F12,Chrome中的CTRL + SHIFT + J),查看是否有任何其他資源阻止下載。 –
去Terric:Ya。我用鉻來調查執行時間。大部分時間都浪費在等待服務器的響應上。問題可能是由於服務器端問題。 – Gary