2011-04-14 70 views
2

只見措施的一些其他方法使用痕跡,但我只是想知道這種方法正確措施...衡量頁面加載時間?

我overrided以下的每次執行:

PreInit 
Init 
InitComplete 
PreLoad 
Load 
LoadComplete 
PreRender 
PreRenderComplete 
SaveStateComplete 
Unload 

然後我保存時間時,處理器使用DateTime.Now.Tick執行...

在卸載結束時,我會打印出他們的每一個執行時間....

所以上面的時間應該是時間花在服務器生成這一頁?

我問是因爲我注意到一些頁面了像879ms總之上,但直到我的瀏覽器實際看到的頁面是需要幾秒鐘。

那幾秒鐘應該是從服務器下載頁面所需的時間?

在此先感謝。

+0

這裏[博客文章(http://stevesmithblog.com/blog/show-page-load-時間/),這解釋了完成這個的兩種方式的細節。 – Druid 2011-04-14 18:19:48

回答

3

是的,有時間的代碼運行,並從服務器獲取並輸出到屏幕的響應時間爲瀏覽器。您可以使用各種測量位置的測量前端工作:

  1. Pingdom Tools
  2. WebWait
  3. Web page Test

要確定代碼的處理時機,我會使用StopWatch class,而不是使用DateTime。 DateTime對小數點更精確,但不太準確。 StopWatch正是爲此而設計的,並且會更好地用於計算時間。避免調用它很多,因爲它本身會增加頁面處理的開銷。我會創建一個new StopWatch(),然後在開始時調用Start,然後在最後調用Stop。然後吐出經過的時間。

3

如果你只是尋找總時間,爲什麼不看看你的IIS日誌的時間,採取價值?

在瀏覽器中的額外時間可能是很多事情。獲取,圖像,CSS,JavaScript文件,在頁面中運行的JavaScript以及HTML本身的客戶端呈現。如果您想更好地感受實際發生的情況,並在啓動時觸發Fiddler,然後重新加載頁面並查看提琴手發生的情況。

+0

這個東西幫助了很多!謝謝! – King 2011-04-15 14:07:22

3

在Global.asax中

namespace aaaaa 
{ 
public class Global : System.Web.HttpApplication 
{ 

    private Stopwatch sw = null; 

    protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
      sw = Stopwatch.StartNew(); 
    } 

    protected void Application_EndRequest(object sender, EventArgs e) 
    { 
     if (sw != null) 
     { 
      sw.Stop(); 
      Response.Write("took " + sw.Elapsed.TotalSeconds.ToString("0.#######") + " seconds to generate this page"); 
     } 
    } 
} 
}