透過檔案下載的方式,測試Client端與Server端的傳輸速率
大家一定都有遇過
明明Server跟網路都好好的沒有問題,但是就是有客戶打電話給工程師說,網頁開的很慢,檔案下載也很慢
通常我們都會先從伺服器先查起,查看伺服器的CPU使用與記憶體的使用狀態
若是使用上沒有問題,就會開始查網路的狀態
如果公司內部沒有病毒流竄,連外網路也很正常,就很容易搞不清楚到底是哪裡的問題
這時,很多人就會想到hinet上有測試網路速度的功能
http://speed.hinet.net/
但是hinet是使用Dr.Speed作為速率測試的套件,一般來說公司可能不太願意再加成本添購這樣的軟體
所以,本文的重點來啦!!
其實相同的方式,用Javascript也可以辦得到
只要讓Client端下載一個比較大的檔案,再去計算開始下載與下載完成的時間差,好像就可以達到我們要的效果了
只要在測速網頁中加上下列的Javascript,並放上一張檔案大一點的圖片就可以辦到了
function funGetbandwidth()
{
var intFileSize = 656; // 檔案大小的K數
var strFileName = "photo.jpg"; // 要下載的檔案名稱
var objImg = new Image;
var dtStart = new Date();
objImg.onload = function()
{
var dtEnd = new Date();
var dtProcess = dtEnd - dtStart;
if(dtProcess == 0){
alert('測試檔案沒有下載,或是測試檔案不存在')
}
var intSpeed = Math.round(intFileSize * 1024) / dtProcess;
if ((intSpeed / 1024) > 1)
alert("速度結果:每秒" + (intSpeed / 1024).toFixed(1) + "m");
else
alert("速度結果:每秒" + intSpeed.toFixed(1) + "k");
};
objImg.src = strFileName;
}
// 執行下載檔案並測速的動作
funGetbandwidth();
程式碼的內容,其中intFileSize是這張圖檔的大小,以K數來算
strFileName是要下載的檔案名稱
都設定好之後,就直接跑跑看吧
是不是很簡單呢?