Измерение времени загрузки страницы ASP.NET
В настоящее время я разрабатываю приложение ASP.NET, которое использует MasterPage
, и я хочу измерить время загрузки веб-формы моего приложения и отобразить эту информацию клиенту.
В моей текущей стратегии задействован обратный вызов события Application_BeginRequest
, связанный с событием (в файле Global.asax
моего веб-сайта), чтобы начать измерение времени, затраченного на процесс на стороне сервера (следующим образом)
protected void Application_BeginRequest(Object sender, EventArgs e) {
Context.Items.Add("Request_Start_Time", DateTime.Now);
}
и вычислить прошедшее время на связанном обратном вызове веб-формы OnPreRender
, распечатав его на элементе-заполнителе (следующим образом)
protected override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
TimeSpan tsDuration = DateTime.Now.Subtract((DateTime)Context.Items["Request_Start_Time"]);
ExecutionTime.InnerHtml = "<em>Server-side processing duration: " + tsDuration.TotalMilliseconds + " miliseconds.</em>";
}
Это лучший способ измерить время загрузки? Есть ли более "изящный" способ достичь этого?
Заранее благодарим за ваше время и сотрудничество.
Ответы
Ответ 1
<% @Page Trace = "true" % > (или установить это в файле web.config)
Включить трассировку и проверить информацию в trace.axd(в корневом каталоге вашего сайта).
Затем вы можете установить моменты времени с помощью:
Trace.Write("Start time intensive task");
Trace.Write("Stop time intensive task");
http://msdn.microsoft.com/en-us/library/bb386420.aspx
Это предполагает, что "ваш клиент" хочет получить глубокие данные отладки.
Ответ 2
Ваше приложение выглядит достаточно точным, если вы не визуализируете очень большие деревья управления и не используете серверные элементы управления, которые выполняют всю свою работу в переопределенном методе Render
(как правило, точно это...).
В этом случае на самом деле есть способ визуализировать фактическое время рендеринга;-) Просто используйте объект HttpResponse.Filter
, чтобы заполнить заполнитель с истекшим временем. Эти фильтры применяются после визуализации веб-формы и до того, как она отправится на клиент.
Если вам это нужно только для разработки, найдите trace.axd
, это даст вам множество подробностей не только о сроках, но и контексте запроса, структуре древовидной структуры и размере страницы.
Ответ 3
Это действительно зависит от того, на какой метрике вы на самом деле показываете.
- Это общая "страница, загруженная в __ секунды", которая будет там все время?
- Это определить, соответствует ли ваше кодированное решение требованиям для клиента и не требуется для производства?
Ответ на эти два будет определять, что имеет наибольший смысл, когда дело касается записи. Если ваша цель - №1, я бы сказал, что ваш метод работает. Если вы собираетесь на номер 2, я могу посмотреть, что у Эрвина.