ASP.Net页面的全球时间安排

时间:2009-03-18 01:39:46

标签: asp.net global-asax timing

我刚刚继承了我需要维护的其他人编写的网站(ASP.Net 2.0) 代码并不可怕,但它有很多让网站运行得非常慢的东西。

我有一个想法来监控这一点,我想看看更有经验的开发人员对它的看法。

我现在的目标是找出页面加载时间过长的时间,以便将注意力集中在那些位置。

我正在考虑在Global.asax中挂钩PreRequestHandlerExecute和PostRequestHandlerExecute事件,并在“Pre”中创建一个StopWatch,将它附加到HttpContext.Items,并在“Post”中读取它,如果请求超过了比方说,100毫秒,我会告诉我让我知道。

一些“伪代码”就是:

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e) {
    System.Diagnostics.Stopwatch theTimer = new Stopwatch();
    theTimer.Start();
    HttpContext.Current.Items.Add("RequestTimer", theTimer);
}

protected void Application_PostRequestHandlerExecute(Object sender, EventArgs e) {
     Stopwatch theTimer = (Stopwatch) HttpContext.Current.Items["RequestTimer"];
     System.Diagnostics.Debug.WriteLine(theTimer.ElapsedMilliseconds + "@: " + HttpContext.Current.Request.RawUrl)
}

您如何看待这种方法?
这样做是否合理?
是否会让我的网站瘫痪? 有一个更好的方法吗?

一些想法:
   - 抓住DateTime.Now.Ticks并存储它可能会更好,这可能比StopWatch更轻    - 我知道最好让所有页面都从我自己的页面继承,然后在那里继续,但我不想通过几十页来改变它们。

非常感谢任何想法! 谢谢!

4 个答案:

答案 0 :(得分:3)

更好的方法是启用tracing

答案 1 :(得分:2)

我不会这样做。这将比它的价值更麻烦。有一些很好的ASP.NET分析工具,如CLR Profiler和Red Gate的ANTS Profiler。

答案 2 :(得分:1)

我只是将开始时间扔到HttpContext集合中并将其拉出来,而不是弄乱秒表。然后,您可以在请求结束时执行简单的减法操作,这对性能的影响可以忽略不计。

答案 3 :(得分:1)

正如BobbyShaftoe所说,分析是你最好的选择。但考虑一下JetBrains的dotTrace;它非常,非常好。