2011-04-14 67 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"); 
     } 
    } 
} 
}