【发布时间】:2010-11-19 17:18:12
【问题描述】:
我需要记录 ASP.net 在我的应用程序中执行每个页面请求所花费的时间,但我需要排除任何网络延迟。我目前正在通过使用 StopWatch 类并在页面生命周期的 OnInit 方法期间启动秒表并在 Unload 方法完成后停止它来捕获渲染时间。 Unload 方法似乎包括将请求发送到客户端所需的时间,因此包括任何互联网/网络延迟。我可以在页面生命周期中停止秒表的最后一个可能点是什么,其中不包括将请求发送到客户端所需的时间。会直接在 Unload 事件之前吗?
相关问题:ASP.net 是否在开始向客户端发送响应之前完成构建响应?还是在形成响应时开始异步发送?
我目前正在使用带有 IIS 5 的 ASP.Net 2.0。
我的所有页面都继承自一个类中的此代码:
readonly Stopwatch _serverExecutionTime = new Stopwatch();
protected override void OnInit(EventArgs e)
{
_serverExecutionTime.Start();
base.OnInit(e);
}
protected override void OnUnload(EventArgs e)
{
_serverExecutionTime.Stop();
base.OnUnload(e);
}
更新
我尝试在 OnRender 方法结束、OnUnload 方法开始和 OnUnload 方法结束时捕获执行时间。在所有三种情况下,时间差最多为 1 毫秒。即使从欧洲的客户端到美国的服务器进行测试,时间也是相同的。所以我认为我在这里遗漏了一些东西。
【问题讨论】: