首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 計算網頁下載速度的實作與替代思路

     編輯:ASP.NET 基礎

透過 WebRequest/WebResponse 下載指定檔案(如測試圖片),記錄開始/結束時間與總位元組數,即可估算下載速度(Kbps)。程式碼示範完整流程:建立請求、取得回應串流、迴圈讀取位元組、計算耗時與速度、最後輸出結果。

核心程式碼邏輯

DateTime stime = DateTime.Now;
WebRequest req = WebRequest.Create(url);
WebResponse resp = req.GetResponse();
int totalBytes = (int)resp.ContentLength;
Stream stream = resp.GetResponseStream();
byte[] buffer = new byte[totalBytes];
int readBytes = 0, offset = 0;
while (readBytes > 0) {
    readBytes = stream.Read(buffer, offset, totalBytes - offset);
    offset += readBytes;
}
DateTime etime = DateTime.Now;
double seconds = (etime - stime).TotalSeconds;
double kbps = Math.Round(totalBytes * 8 / 1024 / seconds * 10.5) / 10; // 近似公式
Response.Write($"網絡速度 {kbps/8} KB/s 耗時 {seconds}s 檔案大小 {totalBytes}");

執行結果輸出範例

網絡速度 125.5 KB/s 圖片長度 12 耗時 0.85 文件大小 102400

社群提供的替代思路

「用一個頁面輸出 3MB 內容(迴圈寫入位元組),再以非同步請求該頁面,計算請求發出到收到最後一個位元組的時間差,即可得到更接近真實頻寬的下載速度。」

此法將「伺服器輸出時間」納入考量,適合需測試端到端傳輸效能的場景;但實作複雜度較高,需處理非同步回調與緩衝區控制。

適用場景比較

方法優點缺點
WebRequest 下載靜態檔簡單、即時、無需額外頁面僅反映靜態資源下載速度
動態產生大頁面 + 非同步抓取含伺服器處理時間、更真實實作複雜、佔用頻寬大

依據專案需求選擇:簡易監控用前者;頻寬品質驗收用後者。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved