време за зареждане на страницата с Jquery

Искам да изчисля времето за зареждане на страницата; Това означава от секунда 0 (зареден е малък фрагмент от jquery) до секунда x, когато цялата страница е заредена.

Чудя се дали някой е имал опит с него, също така идеи как да го приложите правилно ще бъдат оценени.

моля, нямам нужда от разширение, вече имам firebug, имам нужда от js решение

Благодаря :)


person Omar Abid    schedule 31.07.2009    source източник


Отговори (6)


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

Във вашия <head>, т.е. възможно най-рано:

<script>
   var startTime = (new Date()).getTime();
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
   $(window).load(function () {
       var endTime = (new Date()).getTime();
       var millisecondsLoading = endTime - startTime;
       // Put millisecondsLoading in a hidden form field
       // or Ajax it back to the server or whatever.
   });
</script>

Ключът е това поведение, от документите на jQuery:

Когато е обвързано с прозореца, събитието се задейства, когато потребителският агент завърши зареждането на цялото съдържание в документа, включително прозорец, рамки, обекти и изображения.

person Domenic    schedule 31.07.2009
comment
ще добавите майк хюстън съвет при добавяне на първия ред на javascript в главата, това ще увеличи точността - person Omar Abid; 31.07.2009
comment

Искам да направя формуляр, съдържащ се в друг формуляр. Проблемът е, че приложението вече е MDI и не можете да влагате MDI. Ако направя childFrm.Parent = parentForm, някои контроли се държат странно. Например, ако щракнете върху текста в текстовото поле, обикновено текстовият курсор се появява там, където сте щракнали, но не, той просто отива в края на текста.

Някакви предположения?

Благодаря,

- person Domenic; 01.08.2009

Тъй като скриптовете се изпълняват веднага щом бъдат анализирани, предлагам да поставите един скриптов таг точно в заглавката, а след това скриптът да закачи събитието за зареждане на страницата, след като сте заредили jQuery:

<html>
<head>
   <script>
      // Capture start time
   </script>
   ...
   <script src="jquery.js" />
   <script>
      $(window).load(function() {
         // Capture end time
      });
   </script>
...

По този начин трябва да сте в състояние да хванете възможно най-голяма част от времето за зареждане на страницата.

person Mike Houston    schedule 31.07.2009

За да проверя, стартирам help:effective-pom. Той не замества зависимостта от набор от зависимости. Това нормално ли е? Как мога да проверя къде греша?
person Dominic Rodger    schedule 31.07.2009
comment
не, искам го за всеки браузър; това е така, защото ще събера цялото време и ще правя анализи с тях по-късно - person Omar Abid; 31.07.2009

Ако правите това с цел оптимизация, тогава ви предлагам да използвате Yslow. Това е разширение на Firebug-Firefox. Може да ви покаже времето за зареждане на страницата и много друга полезна информация.

person Maxim Sloyko    schedule 31.07.2009

Прочетете препоръката на W3C за времето за навигация

Бележит:

Например, следният скрипт показва наивен опит за измерване на времето, необходимо за пълно зареждане на страница:

<html>
<head>
<script type="text/javascript">

var start = new Date().getTime();
function onLoad() {
  var now = new Date().getTime();
  var latency = now - start;
  alert("page loading time: " + latency);
}

</script>
</head>
<body onload="onLoad()">
<!- Main page body goes from here. -->
</body>
</html>

Скриптът изчислява времето, необходимо за зареждане на страницата, след като се изпълни първият бит JavaScript в главата, но не дава никаква информация за времето, необходимо за получаване на страницата от сървъра.

За да отговори на необходимостта от пълна информация за потребителското изживяване, този документ представя интерфейсите PerformanceTiming. Този интерфейс позволява на механизмите на JavaScript да предоставят пълни измервания на латентността от страна на клиента в приложенията. С предложения интерфейс, предишният пример може да бъде модифициран, за да измерва възприетото от потребителя време за зареждане на страницата.

Следният скрипт изчислява колко време за зареждане на страница от последната навигация.

<html>
<head>
<script type="text/javascript">
function onLoad() {
  var now = new Date().getTime();
  var page_load_time = now - performance.timing.navigationStart;
  alert("User-perceived page loading time: " + page_load_time);
}

</script>
</head>
<body onload="onLoad()">
<!- Main page body goes from here. -->
</body>
</html>
person Jed    schedule 26.05.2016

Не можете наистина да направите това с jQuery, тъй като $(document).ready(); се задейства, когато страницата се зареди.

Можете да направите това с YSlow Firebug плъгин за Firfox. Ако искате това да работи на всички браузъри, ще трябва да добавите сървърен код, за да покажете колко време е отнело, когато първият елемент е записан в долния елемент.

Ако това не е това, което бихте искали, можете да използвате инструмент като Selenium и да напишете тест за улавяне на времето от open до края на waitForPageToLoad. Selenium работи на всички браузъри

person AutomatedTester    schedule 31.07.2009
comment
много интензивен, търси нещо лесно и просто, но ще го разгледа - person Omar Abid; 31.07.2009
comment
изобщо не е интензивен, но го използвам от години. Има някои уроци за Selenium на theautomatedtester.co.uk/selenium_training.htm - person AutomatedTester; 31.07.2009
comment
всичко, от което се нуждая, е няколко реда, пълната рамка не е наистина продуктивна, ако имате много малка цел; какво е по-добре да напишеш 3 реда Javascript или 1 ред в Jquery? - person Omar Abid; 31.07.2009
comment
добре, бих използвал Selenium, защото не е нужно да променяте страницата си за времена и ще можете да съхранявате резултатите в база данни, за да можете да я следите. Да, можете да направите това на страницата, но изисква кодът на страницата ви да се справи с това, когато наистина не е необходимо. - person AutomatedTester; 31.07.2009