Как надежно рассчитать фактическое время загрузки веб-страницы? - PullRequest
11 голосов
/ 20 марта 2009

Мне интересно узнать фактическое среднее время загрузки страницы для моего веб-приложения.

Проще говоря, как журнал мой средний посетитель ждет, прежде чем они смогут начать использовать страницу на моем сайте. С момента, когда они нажимают на ссылку на мой сайт, до тех пор, пока сайт не завершит рендеринг и не готов принять входные данные.

Стандартное решение, по-видимому, заключается в использовании Javascript для сравнения времени от сценария в до события сценария в window.onload ().

(см .: http://www.dreamincode.net/code/snippet1908.htm)

Для меня это не очень актуальная мера, поскольку она игнорирует время, затрачиваемое на разрешение моего домена и получение достаточного количества HTML-содержимого, чтобы начать анализ Javascript.

Выглядит так, как будто Safari запускает window.onload до того, как страница действительно закончила загрузку (http://www.howtocreate.co.uk/safaribenchmarks.html).

Есть идеи?

Можно ли получить время, когда текущий запрос был инициирован через Javascript?
Какое событие возникает после того, как все надежно готово во всех браузерах?

Ответы [ 10 ]

7 голосов
/ 27 апреля 2012

http://www.webpagetest.org/ является отличным ресурсом для измерения времени загрузки

Также в инструментах Google Chorme Dev есть панель временной шкалы, где вы можете записывать события, Вот 2,5-минутное видео, показывающее, как работает временная шкала в Google Chrome http://www.youtube.com/watch?v=RhaWYQ44WEc

3 голосов
/ 20 марта 2009

Firebug - отличный ресурс для этого и множество другой информации о загрузке вашей страницы. Кроме того, Firebug с YSlow идет еще дальше. У YSlow есть множество проверок того, что он работает с вашей страницей и оценивает его производительность на основе определенных правил (используете ли вы CDN, сжат ли ваш CSS и JS и т. Д.). Я считаю неоценимым улучшение некоторых моих улучшений (сжатие JS) для моих сайтов.

3 голосов
/ 20 марта 2009

FireBug имеет «сетевой режим синхронизации», в котором вы можете видеть, сколько времени потребовалось для загрузки каждого ресурса, составляющего вашу веб-страницу.

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

1 голос
/ 21 октября 2010

Попробуйте YSLOW от Yahoo, он ответит на ваш вопрос, но работает только с FireFox (на самом деле это плагин для firebug)

0 голосов
/ 01 сентября 2013

• Выясните, сколько битов вы переносите. (этот конвертер помогает: http://www.matisse.net/bitcalc/)

• Оцените или определите скорость загрузки (Вы можете использовать эту вещь: http://speedtest.net)

• разделить

0 голосов
/ 21 октября 2010

Метод, который я использую, состоит в том, чтобы создать переменную сеанса (обернутую в if, чтобы проверить, что она еще не установлена) в качестве первой вещи в моем файле index.php (через который проходит каждый скрипт). Затем у меня есть событие pageLoad в javaScript, которое отправляет обратно в другой сценарий на сервере, который получает допустимое время сеанса и вычитает его из текущего времени. Это дает вам время, необходимое для запроса на ваш сервер, обработки, ответа и рендеринга.

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

0 голосов
/ 21 марта 2009

псевдо-код.


server marks start of processing the request.
server sends the output.
    script tag, marks start time.
    rest of html markup.
    client script , with server processing time in ms
    client script with window.load event + server-side time
    client script which sends the total back via an ajax call.
0 голосов
/ 20 марта 2009

Я всегда находил полный тест страницы Pingdom Tools очень полезным. Это не решение в коде, но оно дает вам хорошее представление о том, как быстро (или нет) загружается ваша страница.

0 голосов
/ 20 марта 2009

Одна вещь, которую можно сделать, это использовать Javascript, чтобы получить текущее время, когда происходит событие на стороне клиента, которое инициирует обратную передачу на ваш сервер. Передача этого значения обратно на серверную часть позволит вам вернуть его клиенту в качестве начального времени запуска, с которым вы можете сравнить.

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

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

0 голосов
/ 20 марта 2009

Самый точный способ рассчитать время загрузки - на стороне сервера: как только страница будет построена, от того, сколько она будет отображаться в браузере пользователя, будет зависеть:

  • Текущий сетевой трафик;
  • Характеристики компьютера пользователя;
  • Какой браузер он использует.

Итак, использование JavaScript не является хорошей мерой, потому что есть много факторов, которые вы не можете изменить там.

Лучшее, что вы можете сделать, это измерить время, которое требуется каждой странице для генерации на вашем сервере - , что вы можете улучшить.

Нет необходимости говорить, что это будет зависеть от того, на каком языке вы кодируете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...