Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript][PHP]Pomiar rzeczywistego czasu wczytywania strony
Forum PHP.pl > Forum > Przedszkole
lukasz_matysek
Pomiar czasu generowania strony, jak wiadomo, to zadanie tak proste że nie nadaje się nawet na przedszkole smile.gif Jednak mi chodzi o coś innego. Czy istnieje metoda, którą można by zmierzyć całkowity czas, który musi odczekać użytkownik na załadowanie strony? Od kliknięcia, do załadowania ostatniego elementu ?

Poszukuję takiej metody, aby stwierdzić, jak szybko uzyskują dane użytkownicy pewnego prostego systemu bazodanowego który utworzyłem i którym zarządzam. Zdaję sobie sprawę, że wpływ na te rzeczy ma zarówno czas generowania strony na serwerze, jak i prędkość łącza i możliwości komputera który wyświetla stronę, jednak takich właśnie danych potrzebuję.
thek
Jednoznacznie się nie da... Czemu? Bo na to składa się kilka etapów:
1. Czas od kliknięcia do odebrania przez serwer - tutaj gra ważną rolę czas przesyłu, szybkość łącza i trudno Ci będzie przechwycić tę wartość.
2. Czas obsługi skryptu na serwerze - to banalne i zapewne wiesz co tu zrobić.
3. Czas wysyłki na komputer użytkownika - patrz punkt 1
4. Generowanie całości strony u użytkownika - czas generowania bazowego html + pobieranie styli + pobieranie skryptów + wykonanie skryptów osadzonych + modyfikacja struktury DOM w zdarzeniu onload
Nie można tego jednoznacznie określić więc. Możesz jedynie próbować 4 dorwać i dodać do tego wynik z 2. Ale właśnie 1 i 3 są najtrudniejsze do dorwania. Nie da się raczej tego zrobić bez mocnej ingerencji w sam serwis, wariacje z ciastkami i mocne użytkowanie AJAX-em, które na dodatek też będzie obciążone pewnym błędem zapewne.
Musiałbyś bowiem każdym klikiem wysyłać na serwer informację o czasie uniwersalnym (a nie aktualnym na kompie usera) wywołania zdarzenia click jednoznacznie identyfikujące żądanie http i w momencie załadowania wszystkiego na stronie nowej zapisać czas owego końca, by odjąć od zapisanego na serwerze. Po drodze zapisując czasy pośrednie (start generowania na serwerze, koniec generowania na serwerze, start generowania u użytkownika) miałbyś mniej więcej orientacyjne spojrzenie jak to z czasem wygląda. Ale uwierz, że to proste nie jest jak się to opisuje.
tehaha
a gdyby tak:
- pierwszy czas wygenerować w php na samej górze skryptu, czyli od razu po rozpoczęciu generowania treści,
- natomiast drugi w jquery np czymś takim:
  1. <script type="text/javascript">
  2.  
  3. var page_start_time = <?php echo $page_start_time ?>
  4.  
  5. $(window).load(function()
  6. {
  7. var page_load_end_time= (new Date()).getTime();
  8. });

czyli po całkowitym załadowaniu strony:
Cytat
The load event is sent to an element when it and all sub-elements have been completely loaded.


nie wiem jak bardzo precyzyjny będzie wynik, ale na pewno przedstawi to jakiś obraz sytuacji, a i sam sposób jest bardzo łatwy w użyciu, po obliczeniu tych 2 wartości możesz je przesłać ajaxem i zapisać w bazie
thek
Tehaha... Ale to co robisz to podejście od punktu 2 dopiero. Tutaj musiałoby być coś w deseń. Dla linków wszystkich zdarzenie AJAXowe onclick wysyłające na serwer czas uniwersalny a po załadowaniu strony całkowicie obliczenie różnicy między końcem zdarzeń w onload a zapisanym na serwie, przy czym w wypadku braku takowego, czasem startu byłby czas rozpoczęcia generowania strony (wejście spoza stron naszego serwisu).
tehaha
tak masz rację, ale to wszystko jeszcze zależy do tego do czego mają służyć te dane, uwzględnienie wszystkich czynników i wygenerowanie bardzo precyzyjnego wyniku może być dość trudne w wykonaniu, a jeżeli te dane mają tylko przybliżyć ile średnio ładuje się strona to chyba taki sposób wystarczy
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.