2016-03-27 15 views
2

Ich versuche, die Leistungsverbesserung von HTTP/2 im Vergleich zu HTTP/1.1 aus der Header-Komprimierung zu sehen. Ich habe ein Netzwerk von 300ms Latenz und 50 KB/s Bandbreite simuliert (ich habe auch einige andere Kombinationen ausprobiert).Wie können wir die Leistungsverbesserung anhand der HTTP/2-Header-Komprimierung messen?

I mehr Versuche von Tests habe, die unterschiedliche Anzahl von Anfragen senden von 1 bis 100.

In jedem Test Variieren zu durchtrennen, ich meine Seite mehrmals geladen werden und die Zeit zwischen Anforderung gesendet und ersten Byte der Antwort empfangenen messen (Ich verwende dafür die Navigation Timing API). Es gibt eine Reduzierung dieser Zeit zwischen der allerersten Anfrage und den nachfolgenden Anfragen. Eine ähnliche Verringerung wird jedoch auch bei HTTP/1.1 beobachtet. So gibt es keinen sichtbaren Gewinn im Vergleich zu HTTP/1.1. Es gibt erhebliche Verbesserungen bei der Gesamtladezeit der Seite, aber ich kann nicht sagen, dass es sich um Header-Komprimierung oder Multiplexing handelt. Also denke ich, dass das Messen der Zeit zwischen der gesendeten Anfrage und dem ersten Byte der empfangenen Antwort ein genaues Maß geben sollte. Aber ich kann das nicht erleben.

meine Probe finden Testergebnisse

enter image description here

Was sollte die richtige Art und Weise seiner Leistungsverbesserung von Header-Kompression zu messen?

Danke.

+0

Haben Sie die Wen-Site im Internet verfügbar? Zuerst sollten Sie TLS-Probleme testen. Auf der Online-Website würde ich empfehlen, einen Test unter https://www.ssllabs.com/ssltest/ durchzuführen. Dann können Sie http://www.webpagetest.org/ verwenden, um die Site ohne HTTP/2 und dann mit HTTP/2 zu testen. – Oleg

+0

Hallo Oleg, ich benutze meine eigene Website auf Jetty. Kannst du mehr darüber klären, was hier mit TLS Problem gemeint ist? Ich vergleiche die Leistung von HTTP/2 mit HTTPS. Daher nehme ich an, dass es für HTTP/2 über HTTPS von Vorteil sein wird, da weniger TLS-Overhead in HTTP/2 ist. –

+0

** Können Sie die URL auf Ihre Website posten? ** HTTP/2 funktioniert meistens nur über HTTPS ('h2' Protokoll). Die Leistungsprobleme, die Sie beschrieben haben, könnten von TLS stammen. Es ist schwierig, über die Theorie vieler möglicher Probleme zu sprechen. Es ist besser, wenn Sie nur das Beispiel der URL veröffentlichen, die die beschriebenen Probleme haben. Das Problem mit "dem ersten Antwortbyte" sieht für mich wirklich nach dem TLS-Problem aus. – Oleg

Antwort

2

Wenn Sie die Leistungsverbesserungen durch Header-Komprimierung allein kennen möchten, benötigen Sie zwei Szenarien, deren einziger Unterschied die Header-Komprimierung ist. Da HTTP/1.1 keine Headerkomprimierung unterstützt, müssen Sie den Test über HTTP/2 durchführen. In einem Fall fragen Sie Ihren HPACK-Encoder, keine Komprimierung zu verwenden (keine Huffman-Codierung, keine Verwendung von Tabellen).

Die Art, wie ich es sehe, brauchen Sie ziemlich durchdachte Server-Unterstützung, um dies über eine ausgewachsene Website zu messen. Und Sie wollen wahrscheinlich eine vollständige Website, so dass Ihre Header interessant genug sind. Mein bester Vorschlag ist daher, dass Sie den NginX-Quellcode auschecken und seinen Code bearbeiten, um HPACK so weit wie möglich zu unterstützen.

Wenn eine solche umfassende Lösung fehlschlägt, können Sie einfach messen, wie viele Byte in HTTP/2-Frames für Header verwendet werden und wie viele Byte für Header in HTTP/1.1-Abfragen Ihrer Site verwendet werden. Gerade jetzt können Wireshark und ein paar Parsing Ihnen helfen. Wir planen, solche Zähler zu ShimmerCat hinzuzufügen, aber leider ist es noch nicht da (es gibt quick command line switches, um verschiedene Protokolle zu testen, aber ....).

+0

Ihre Punkte sind sinnvoll. Für den ersten Punkt wollte ich eigentlich einen Weg finden, um zu messen, wie viel Leistungsverbesserung wir durch Header-Komprimierung in HTTP/2 im Vergleich zu HTTPS (HTTP/1.1 über SSL) erzielen können. Also nehme ich Messungen der gleichen Webseite über zwei Protokolle. Wie Sie bereits erwähnt haben, sind meine Header möglicherweise nicht so interessant. Stimmen Sie Ihrem Vorschlag zu, Bytes zu messen. Aber ich bevorzuge es immer noch, einen Weg zu finden, um die Zeit zu verkürzen, indem ich meinen Testanzug anpasse. Aber konnte noch keinen Weg finden. –

0

Nach dem Vergrößern der Header-Größe ~ 2 KB und Emulieren von niedrigen Bandbreite und hohen Latenzbedingungen konnte ich TTFB Reduktion zwischen ersten und zweiten Anfragen sehen.