测量页面加载时间
本文关键字:时间 加载 测量 | 更新日期: 2023-09-27 17:50:24
我看到了使用trace的其他度量方法,但是我只是想知道这个方法是否正确度量…
我重写了以下语句的每次执行:
PreInit
Init
InitComplete
PreLoad
Load
LoadComplete
PreRender
PreRenderComplete
SaveStateComplete
Unload
然后使用DateTime.Now.Tick…存储处理程序执行的时间
在卸载结束时,我将打印出它们的每个执行时间....
所以上面的时间应该是服务器用来生成页面的时间?
我问是因为我注意到一些页面总共花费了879ms以上,但直到我的浏览器真正看到页面是花了几秒钟。
这几秒钟应该是从服务器下载页面的时间?
in 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");
}
}
}
}
是的,有时间让代码运行,也有时间让浏览器从服务器获取响应并将其输出到屏幕。您可以使用各种测量站点来测量前端工作:
- <
- Pingdom工具/gh>
- WebWait
- 网页测试
为了确定处理代码的时间,我将使用StopWatch
类而不是使用DateTime
。DateTime更精确到小数点,但精度较低。StopWatch
正是为此而设计的,可以更好地用于计算时序。但是要避免频繁调用它,因为调用它本身会增加页面处理的开销。我会创建一个new StopWatch()
,然后在最开始调用Start,然后在最后调用stop。然后吐出经过的时间。
- <
- 秒表类/gh>
- 精确运行时间测量秒表
如果您只是在寻找总体时间,为什么不查看IIS日志中的花费时间值呢?
在浏览器上的额外时间可能是很多事情。抓取、图像、CSS、javascript文件、在页面中运行的javascript,以及HTML本身的客户端呈现。如果你想更好地了解实际发生了什么,什么时候启动Fiddler,然后重新加载页面,看看Fiddler中发生了什么。