Heim > Web-Frontend > js-Tutorial > Hauptteil

HTTP/s HTTP/s HTTP3

王林
Freigeben: 2024-09-06 16:31:05
Original
928 Leute haben es durchsucht

Einführung

Dies ist eines meiner Lieblingsthemen und dies wäre ein wissensintensiver Artikel. Lesen Sie es also sorgfältig durch.

Domain Sharding

  • Domain-Sharding ist eine Technik zur Verbesserung der Geschwindigkeit und Leistung einer Website.
  • Dabei geht es um das Aufteilen oder „Sharding“ von Ressourcen auf mehrere Domänen.
  • Wenn ein Browser eine Website lädt, sendet er Anfragen an den Server der Website, um verschiedene Arten von Ressourcen wie HTML, CSS, JavaScript, Bilder usw. herunterzuladen.
  • Browser begrenzen jedoch die Anzahl gleichzeitiger Verbindungen (Downloads), die sie zu einer einzelnen Domain herstellen. (6, abhängig vom Browser)
  • Durch die Aufteilung von Ressourcen auf mehrere Domänen (z. B. die Bereitstellung von Bildern aus einer anderen Domäne als Skripts) können Sie dieses Limit umgehen und mehr Ressourcen gleichzeitig herunterladen, was zu schnelleren Seitenladezeiten führen kann.

Multiplexing

  • Dadurch können mehrere Anfragen und Antworten gleichzeitig über eine einzige Verbindung gesendet werden (Standardeinstellung etwa 100)

HINWEIS:-

  • Es ist jedoch wichtig zu beachten, dass HTTP/2, die neueste Version des HTTP-Protokolls, Multiplexing,
  • unterstützt

So übernehmen/ändern Sie das aktuelle Protokoll

  • Um von HTTP/1 zu HTTP/2 zu wechseln, müssen Sie Ihren Server für die Unterstützung von HTTP/2 konfigurieren.

  • Die genauen Schritte hängen von der Serversoftware ab, die Sie verwenden. Hier sind allgemeine Schritte für einige gängige Server:

Apache:

  • Apache unterstützt HTTP/2 ab Version 2.4.17. Um es zu aktivieren, müssen Sie das Modul mod_http2 in Ihre Apache-Konfiguration einbinden und dann Protocols h2 http/1.1 zu Ihrer Konfiguration hinzufügen.

Nginx:

  • Nginx unterstützt HTTP/2 ab Version 1.9.5. Um es zu aktivieren, fügen Sie http2 in Ihre Listen-Anweisungen in Ihrer Nginx-Konfiguration ein, etwa so: listen 443 ssl http2.

Node.js:

-Wenn Sie Node.js verwenden, können Sie das integrierte http2-Modul verwenden, um einen HTTP/2-Server zu erstellen.

HINWEIS:-

Denken Sie daran, dass HTTP/2 in den meisten Browsern HTTPS erfordert, daher müssen Sie auch ein SSL-Zertifikat für Ihren Server einrichten.

Was tun wir aus der Front-End-Perspektive?

  • Nein, der Wechsel von HTTP/1 zu HTTP/2 wird auf Serverebene gehandhabt, nicht auf Client- oder Front-End-Ebene.
  • Sobald Ihr Server jedoch HTTP/2 unterstützt, möchten Sie möglicherweise bestimmte Techniken zur Leistungsoptimierung, die bei HTTP/1 üblich sind, wie Domain-Sharding oder Asset-Verkettung, noch einmal überdenken, da sie bei HTTP/2 unnötig oder sogar schädlich sein können .

Wie die Verbindung zwischen Client und Server zustande kommt

HTTP/1

  • HTTP/1 arbeitet mit einer einzigen Verbindung pro Anfrage-/Antwortmodell. Das bedeutet, dass für jede Anfrage vom Client an den Server eine separate TCP-Verbindung aufgebaut wird.

  • Wenn eine Webseite mehrere Ressourcen benötigt (wie Bilder, CSS, JavaScript-Dateien), müssen mehrere TCP-Verbindungen hergestellt werden.

  • Dies kann zu einem Problem führen, das als „Head-of-Line-Blockierung“ bekannt ist und bei dem das Laden einer Ressource durch das Laden einer vorherigen Ressource blockiert werden kann.

  • HTTP/1 unterstützt keinen Server-Push, was bedeutet, dass der Server nur Ressourcen senden kann, die der Client angefordert hat.

HTTP/2

  • HTTP/2 führt Multiplexing ein, das das gleichzeitige Senden mehrerer Anfragen und Antworten über eine einzige TCP-Verbindung ermöglicht. Dadurch wird das Problem der Head-of-Line-Blockierung effektiv beseitigt.

  • HTTP/2 führt außerdem Server-Push ein, bei dem der Server proaktiv Ressourcen an den Client senden kann, bevor der Client überhaupt danach fragt. Dies kann die Leistung verbessern, indem die Notwendigkeit von Roundtrip-Anfragen zwischen Client und Server reduziert wird.

  • HTTP/2 unterstützt auch die Header-Komprimierung, was den Overhead reduzieren und die Leistung verbessern kann, insbesondere für mobile Benutzer.

HTTP/2 unterstützt auch Header-Komprimierung

  • HTTP/2 führt eine neue Funktion namens Header-Komprimierung ein, die den Overhead von HTTP-Headern reduziert.

  • In HTTP/1 werden Header als Klartext gesendet, was recht umfangreich sein kann und zu einem erheblichen Mehraufwand für jede Anfrage und Antwort führt.

  • Dies gilt insbesondere für Anfragen, die Cookies oder Token in den Headern enthalten.

  • HTTP/2 verwendet einen Mechanismus namens HPACK-Komprimierung, um Header zu komprimieren.

  • HPACK ist ein einfaches und sicheres String-Komprimierungsschema, das die Größe von Headern reduziert und so HTTP/2-Anfragen und -Antworten schneller und effizienter macht.

HPACK-Komprimierung funktioniert intern

  • Dies geschieht durch die Verwaltung einer Liste zuvor gesendeter Header-Felder sowohl auf der Client- als auch auf der Serverseite, bekannt als dynamische Tabelle.

  • Wenn ein Header-Feld in nachfolgenden Anfragen oder Antworten wiederholt wird, wird anstelle des gesamten Header-Felds ein Index gesendet, der auf den Eintrag in der dynamischen Tabelle verweist.

  • Dadurch wird die Größe der Header für Anfragen und Antworten erheblich reduziert, insbesondere wenn viele Header über mehrere Anfragen hinweg wiederholt werden.

HTTP/3

  • HTTP/3 ist die nächste Hauptversion des HTTP-Protokolls. Es basiert auf QUIC, einem von Google entwickelten Transportschichtprotokoll.

Hier sind einige der Vorteile von HTTP/3 gegenüber HTTP/2:

Verbesserte Geschwindigkeit:

  • HTTP/3 verwendet QUIC, das schneller und zuverlässiger ist als TCP, das von HTTP/1 und HTTP/2 verwendete Transportprotokoll.
  • QUIC verkürzt die Zeit für den Verbindungsaufbau und beschleunigt die Erstverbindung zu einem Server.

Bessere Handhabung von Paketverlusten:

  • In HTTP/2 verlangsamt ein verlorenes Paket alle Streams (Anfragen/Antworten). QUIC löst dieses Problem, indem es Streams unabhängig verarbeitet, sodass ein verlorenes Paket nur einen einzelnen Stream betrifft.

Verbindungsmigration:

  • QUIC unterstützt die Verbindungsmigration. Das heißt, wenn ein Benutzer sein Netzwerk ändert (z. B. von WLAN auf 4G wechseln), kann die bestehende Verbindung aufrechterhalten und in das neue Netzwerk migriert werden.

  • Dies ist mit TCP nicht möglich, da es an die ursprüngliche IP-Adresse gebunden ist.

Standardmäßige Verschlüsselung:

  • QUIC beinhaltet standardmäßig TLS 1.3-Verschlüsselung. Dies macht das Protokoll sicherer und reduziert die Anzahl der für den Verbindungsaufbau erforderlichen Roundtrips.

Server-Push:

  • Wie HTTP/2 unterstützt HTTP/3 auch Server-Push, bei dem der Server proaktiv Ressourcen an den Client senden kann, bevor der Client überhaupt danach fragt.

HINWEIS:-

Es ist wichtig zu beachten, dass HTTP/3 zwar mehrere Vorteile bietet, aber derzeit noch nicht allgemein unterstützt oder verwendet wird.

HTTP/s HTTP/s HTTP3

HTTP/s HTTP/s HTTP3

Referenz:-

  1. https://frontendmasters.com/courses/realtime/
  2. https://developer.mozilla.org/en-US/docs/Web/HTTP
  3. https://developer.mozilla.org/en-US/docs/Glossary/HTTP_2
  4. https://developer.mozilla.org/en-US/docs/Glossary/HTTP_3

Das obige ist der detaillierte Inhalt vonHTTP/s HTTP/s HTTP3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage