Я только что унаследовал веб-сайт (ASP.Net 2.0), написанный кем-то другим, который мне нужно поддерживать.
Код не так уж и ужасен, но в нем есть несколько вещей, которые делают сайт невероятно медленным.
У меня есть идея это контролировать, и я хочу посмотреть, что об этом думают более опытные разработчики.
Моя цель сейчас - выяснить, когда страницы загружаются слишком долго, чтобы сосредоточить внимание на этих местах.
Я подумываю о подключении событий PreRequestHandlerExecute и PostRequestHandlerExecute в Global.asax, создании StopWatch в «Pre», присоединении его к 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
- Я знаю, что было бы лучше, чтобы все страницы наследовали от моей собственной страницы, и время там, но я не хочу просматривать десятки страниц и менять их все.
Любые мысли очень ценятся!
Спасибо!