asp.net 测量页面加载时间?

wbgh16ku  于 2023-10-21  发布在  .NET
关注(0)|答案(4)|浏览(125)

我看到一些其他的方法测量与使用跟踪,但我只是想知道这种方法测量正确.
我覆盖了以下每一个执行:

PreInit 
Init 
InitComplete 
PreLoad 
Load 
LoadComplete 
PreRender 
PreRenderComplete 
SaveStateComplete 
Unload

然后我使用DateTime.Now.Tick存储处理程序执行的时间.
在卸载结束时,我将打印出它们的执行时间。
所以上面的时间应该是服务器生成页面所花费的时间?
我问是因为我注意到上面的一些页面总共花了879毫秒,但直到我的浏览器真正看到页面才花了几秒钟。
这几秒钟应该是从服务器下载页面所需的时间?
先谢了。

pokxtpni

pokxtpni1#

在全球.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");
        }
    }
}
}
5t7ly7z5

5t7ly7z52#

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

  1. Pingdom Tools
  2. WebWait
  3. Web page Test
    为了确定处理代码的时间,我将使用StopWatch class而不是DateTime。DateTime更精确到小数点,但不太准确。StopWatch正是为此而设计的,并且更适合用于计算时序。但是要避免多次调用它,因为这本身会增加页面处理的开销。我会创建一个new StopWatch(),然后在最开始时调用Start,然后在最后调用stop。然后吐出经过的时间。
vwkv1x7d

vwkv1x7d3#

如果您只是在寻找总体时间,为什么不看看IIS日志中的时间值呢?
在浏览器中的额外时间可能是很多事情。抓取,图像,CSS,JavaScript文件,在页面中运行的javascript,以及HTML本身的客户端渲染。如果您想更好地了解实际发生的事情以及何时启动Fiddler,然后重新加载您的页面并查看Fiddler中发生的事情。

jm81lzqq

jm81lzqq4#

在.aspx页面的最顶部,如果您设置了Trace标志,它将给予一个相当好的读数,显示上述每个事件占用了多少时间,而无需添加任何额外的事件处理程序。例如

<%@ Page Trace="true" Title=...

在你的代码背后,如果有任何其他的事件/功能,你想衡量,你可以添加

Page.Trace("start of something interesting");
...
Page.Trace("end of something interesting");

它将自动测量Page.Trace调用之间的时间间隔。

相关问题