2013-05-29 12 views
18

Ich arbeite an der Erkennung der Verbindungsgeschwindigkeit, so plante ich mit window.performance Objekt für die Dauer Berechnung gehen.Erklärung von window.performance Javascript

Ich bin wenig verwirrt mit window.performance.timing Objekt wird basierend auf der gesamten Seite geladen, oder basierend auf der letzten Anfrage und Antwort generiert.

Beispiel:

I 5 für Web-Seite zu laden Server Anruf habe, performance.timing Objekt erzeugt wird, basierend auf alle 5 Server Anrufe oder basierend auf dem 5. Server-Aufruf (letzter Anruf).

Probe Verbindungsgeschwindigkeit Berechnung Referenz

var bitsLoaded = 100000; //bits total size of all files (5 server call). 
var duration = performance.timing.responseEnd - performance.timing.navigationStart; 
var speedBps = Math.round(bitsLoaded/duration); 
var speedKbps = (speedBps/1024).toFixed(2); 
var speedMbps = (speedKbps/1024).toFixed(2); 

Alles, was nicht klar bereit

Jede Idee, über window.performance

Antwort

38

performance.timing

Nicht sicher zu erklären, wenn diese Tabelle gibt Sie ein besseres Verständnis von Performance.timing.

Für Ihre Frage:

Ich habe 5 Server Aufruf für Web-Seite zu laden, performance.timing Objekt erzeugt wird, basierend auf allen 5 Server Anrufe oder basierend auf dem fünften Server-Aufruf (letzter Aufruf).

Die Antwort lautet: performance.timing erzeugt wird, basierend auf alle Anfragen und Antworten (aber nicht einschließlich der Ajax sind).

Für die Probe Verbindung Geschwindigkeitsberechnung Skript gaben Sie, ich denke, die unten ist besser.

var duration = performance.timing.responseEnd - performance.timing.responseStart; 

Der Grund ist: die Dauer von navigationStart zu responseEndenthält DNS Timing, das keine Daten vom Server zum Client überträgt.

Die Definition der Zeitsteuerung finden Sie unter https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html.

+0

Beachten Sie, dass 'performance.timing.responseEnd - performance.timing.responseStart; 'misst nur die Zeit, die das Root-Dokument (z. B. HTML) benötigt, um vom Server gesendet zu werden, nicht die 5 Server-Aufrufe und 100000 Bits, die karthick erwähnt hat. – NicJ

1

performance.timing basiert NICHT auf der letzten Anfrage und Antwort. Er misst die Verzögerung zwischen NavigationStart Bühne und loadEventStart Bühne in einem Seitenlebenszyklus. Wie erklärt here, ist es Haupteinsatzzweck, die Seitenladegeschwindigkeit zu bestimmen.

Meiner Meinung nach. performance.timing kann nicht wirklich für die Messung der Verbindungsgeschwindigkeit verwendet werden, da es initiiert wurde Nach hat der Benutzer die Antwort erhalten und ist ein Javascript-Objekt, das auf dem Browser ausgeführt wird. Ich schlage vor, dass Sie einfach den Benutzer anpingen und die Umlaufzeit verwenden.

+0

Hallo, ich bin immer noch etwas verwirrt darüber, wie es wirklich funktioniert, aber ich bekomme die allgemeinen Fakten. Zum Öffnen habe ich "navigationStart und loadEventStart" verwendet, was richtig wäre? Jetzt habe ich eine Frage, wie diese Leistungsklasse passiert, wenn die Seite geladen wird oder auf die URL zugegriffen wird (basierend auf meinem Verständnis?) .. Wie kann ich dann die Geschwindigkeit beim Schließen einer Webseite bekommen? Ist es eine andere Klasse? –