2011-05-14 61 views
3

我即將在我們的Web應用程序中實施互聯網連接speedtest。沒有要求它必須是一個非常先進的功能,所以我開始儘可能簡單地做到這一點。網站速度測試。問題與gzip?

這個想法是從HttpHandler獲取一些數據,看看它需要多長時間,然後從數據量和時間計算速度。我認爲最好是發送可能的數據,然後扔掉最高和最低時間,然後計算平均時間。

我的HttpHandler:

public class SpeedTest : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     var Response = context.Response; 

     FileInfo file = new FileInfo(@"C:\dev\Project\****\trunk\Application\1mb.txt"); 

     if (file.Exists) 
     { 
      Response.Clear(); 
      Response.AddHeader("Content-Length", file.Length.ToString()); 
      Response.WriteFile(file.FullName); 
      Response.End(); 
     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

這裏是我的jQuery代碼,增加了按鈕,彈出一個對話框,在這裏我將展示成果等

$(document).ready(function() { 
$('<a href="#">Speedtest</a>').prependTo('#HeaderInfoBarRight').button({ 
    text: false, icons: { primary: "ui-icon-clock" } 
}) 
    .click(function() { 
     var dialog = $('<div></div>').dialog({ 
      autoOpen: false 
      , title: 'Speedtest' 
      , modal: true 
      , width: 'auto' 
      , resizable: false 
      , height: 'auto' 
      , minHeight: 50 
      , close: function() { 
       $(this).dialog('destroy').remove(); 
      } 
     }); 
     var html = '<div>To start the test click below.</div>' + 
      '<a href="#">Start test</a>'; 
     dialog.html(html).dialog('open'); 
     dialog.find('a').button({ text: true }) 
     .click(function() { 
      var startTest = new Date(); 
      $.post('SpeedTest.ashx', {}, function (result) { 
       var endTest = new Date(); 
       //Calculate time 
      }); 
     }); 
    }); 

});

文件1mb.txt通過命令提示在視窗創建爲:

FSUTIL文件createnew C:\ TEMP \ 1mbfile.txt 1048576

該文件是完全1MB。現在解決問題。當我檢查例如螢火蟲的響應時,它的大小隻有8.8kb。這怎麼可能?它是GZIP壓縮嗎?它如何將一個1MB文件壓縮到8.8 kb?這是因爲當你用fsutil創建一個文件重複的數據?

我搜索的解決方案是強制它不壓縮的方法(如果這是問題),那可能嗎?我無法找到一種方法來設置正確的標題不壓縮。

如果這是一個壓縮問題,而且沒有任何關於它的事情,我可以檢查響應大小並始終指望它在所有環境中的大小都正確嗎?

歡迎任何其他想法。如果有這樣的想法,還有關於如何實施速測的一般想法。

回答

1

是的,它可能是一個gzip壓縮問題。 fsutil file createnew創建一個由零組成的文件,所以它當然可以非常有效地壓縮。

它可以使用Fiddler網絡調試代理,以驗證您的Web服務器是否使用壓縮,在這篇文章中描述: HTTP Compression in IIS 6 and IIS 7

+0

謝謝你的回答。一個問題,但。我不想關閉Web服務器上的壓縮,因爲我需要它來提高性能。我只想關閉這個明確的請求。你知道這是可能的嗎? – John 2011-05-17 06:25:19

+0

如果您發送HTTP標頭'Accept-Encoding:'沒有值,它可能會強制服務器向您發送未壓縮的響應。或者,您的瀏覽器可能會設置about:config頁面來禁用此標題。 – 2011-05-18 03:35:13

0

肯定它是一個壓縮的問題。作爲一種解決方法,我沒有嘗試,但我認爲它應該工作,將生成的文件的擴展名更改爲Gzip將避免的內容(例如:mp3),然後再次嘗試您的測試,看看它是否再次被壓縮。

讓我知道發生了什麼,謝謝。