2009-09-30 3 views
2

Скажите, я хочу рассчитать время загрузки страницы ASP.NET. Когда пользователь вводит URL и прессы введите следующие события имеют место:Расчет времени загрузки на странице ASP.NET

  1. запрос отправляется на сервер
  2. Сервер обрабатывает запрос, выполняет любой на стороне логики сервера нагрузки, делает DB вызывает
  3. Браузер получает ответ, загрузок HTML и JS файлы
  4. Браузер работает на стороне клиента логики (JavaScript функции на нагрузке)
  5. браузер отображает страницу

Если бы я хотел, чтобы измерить время, необходимое для каждой из этих операций, я понимаю, что я могу использовать следующие инструменты:

  1. Для (1), используйте Fiddler для расчета времени по сети
  2. для получения (2), включения трассировки для расчета времени для сервера обработки
  3. стороны для (3), использовать Fiddler, чтобы вычислить время, необходимое для загрузки
  4. для (4), использовать Firebug для времени, затраченного функцием JS

Подведение итогов с 1 по 4 дает общее время.

Я считаю, что это правильно? Есть ли один инструмент, который делает все это? Есть ли более простой способ

ответ

4

Firebug на самом деле даст вам 1 и 3, а также на вкладке «Сеть», и предоставляет красивые небольшие расщепленные графические полосы, которые показывают вам компоненты времени отклика (поиск в DNS, запрос сервер, ожидающий первый байт, время загрузки).

На самом деле нет ни одного инструмента, который мог бы выполнять как измерения клиента, так и сервера, поскольку серверный код работает на сервере, а клиентский код работает на клиенте. Вы можете приблизиться просто, вычитая все остальные моменты из общего числа, но самый точный результат сервера будет действительно от самого сервера.

+0

Хотя на стороне сервера код выполняется на сервере, так как клиент все еще ждет, пока это происходит, почему косяк мы захватить это на клиенте? – Nick

+0

Клиент фиксирует его как компонент времени отклика. Тем не менее, это также учитывает каждый сетевой скачок, который должен пройти трафик, чтобы добраться до вас, и время чтения (TTFB, TTLB), поэтому оно не будет таким точным, как расчет сервера, который может запустить таймер как как только запрос будет приемником, и остановите его прямо перед записью вывода. – womp

+0

Итак, можно ли сказать, что время отклика охватывает шаги 1, 2, 3? – Nick

0

Visual Round Trip Analyzer - хорошая программа, которая использует NetMon для расчета шагов # 1, 2, & 3. Она может рассказать вам, сколько времени занимает ваша сеть, и время обработки на сервере.

Шаг №4 является сложным, поскольку различные браузеры начнут отображать контент в разное время.

1

Существует плагин для FireFox, который поддерживает эту потребность:

Google Page Speed - Этот инструмент позволит вам записать веб-активность в прямом эфире, а затем просматривать каждую часть запросов. Сколько времени они берут и какие компоненты работают параллельно.

Кроме того, если вы хотите оптимизировать страницу, YSlow может предоставить другой совет, хотя он не дает вам конкретных данных, которые вы запрашиваете.

+0

Скорость страницы Google также требует FireBug – Nirlep

+0

Делает ли шаги YSlow 1, 2, 3, 4? – Nick

+0

Мой плохой YSlow - просто полезный инструмент оптимизации, он не показывает вам истинного времени для запросов туда и обратно. Скорость страницы Google показывает это, и это очень полезно для выяснения, где ваши настоящие узкие места. –

0

Почему вы просто не используете элемент управления браузером в .NET и не создаете собственное приложение для проверки времени, полученного от первоначального запроса до окончательного ответа?

0

Для точки № 2,

в global.asax

Private sw As Stopwatch = Nothing 
Private Sub Global_asax_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.BeginRequest 
    sw = Stopwatch.StartNew 
End Sub 

Private Sub Global_asax_EndRequest(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.EndRequest 
    If sw IsNot Nothing Then 
     sw.Stop() 
     Response.Write("<b>took " & sw.Elapsed.TotalSeconds.ToString("0.#######") & " seconds to generate this page</b>") 
    End If 
End Sub 
+0

Это предполагает единственного пользователя ... как насчет того, если у вас 80 запросов в секунду ... –

+0

@mrHinsh, вот что он спросил – Fredou

Смежные вопросы