测量页面加载时间?

时间:2011-04-14 17:41:51

标签: c# asp.net

我在使用trace时看到了其他一些测量方法,但我只是想知道这种方法是否正确测量...

我重写了以下各项的执行情况:

PreInit 
Init 
InitComplete 
PreLoad 
Load 
LoadComplete 
PreRender 
PreRenderComplete 
SaveStateComplete 
Unload

然后我使用DateTime.Now.Tick ...

存储处理程序执行的时间

在卸载结束时,我将打印出每个执行时间......

那么上面的时间应该是服务器花在生成页面上的时间吗?

我问的是因为我注意到一些页面总共花了879ms,但直到我的浏览器实际看到页面花了几秒钟。

这几秒钟应该是从服务器下载页面的时间吗?

提前致谢。

3 个答案:

答案 0 :(得分:4)

在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");
        }
    }
}
}

答案 1 :(得分:3)

如果您只是在寻找总体时间,为什么不直接查看IIS日志中的时间值?

浏览器中的额外时间可能很多。获取,图像,CSS,javascript文件,在页面中运行的javascript以及HTML本身的客户端呈现。如果你想更好地了解实际发生的事情以及启动Fiddler然后重新加载页面并查看Fiddler中发生的事情。

答案 2 :(得分:3)

是的,代码运行的时间和浏览器从服务器获取响应并将其输出到屏幕的时间。您可以使用各种测量站点测量前端工作:

  1. Pingdom Tools
  2. WebWait
  3. Web page Test
  4. 要确定处理代码的时间,我会使用StopWatch class而不是DateTime。 DateTime对小数点更精确,但不太准确。 StopWatch完全是为此设计的,最好用于计算时间。尽管避免调用它,因为它本身会增加页面处理的开销。我会创建一个new StopWatch()然后在一开始就调用Start,然后在最后调用stop。然后吐出经过的时间。