Измерение времени загрузки страницы 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, я могу посмотреть, что у Эрвина.