Heim Web-Frontend js-Tutorial Node.js-Lerntutorial HTTP/2-Server-Push-Beispielfreigabe

Node.js-Lerntutorial HTTP/2-Server-Push-Beispielfreigabe

Jan 02, 2018 am 09:16 AM
http javascript node.js

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen zum HTTP/2-Server-Push im Node.js-Lernprogramm vor. Der Artikel stellt ihn anhand von Beispielcodes ausführlich vor Wer braucht es? Lassen Sie uns gemeinsam mit dem Herausgeber unten lernen. Ich hoffe, es hilft allen.

Vorwort

Die aktuelle Version von Node.js v8.4+ bringt eine experimentelle Version von HTTP/2, die Sie durch Setzen des Parameters --expose-http2 starten können.

In diesem Artikel werde ich den wichtigsten Aspekt von HTTP/2, Server Push, vorstellen und ein kleines Node.js-Programmbeispiel erstellen, um es zu verwenden. Im Folgenden gibt es nicht viel zu sagen. Werfen wir einen Blick auf die ausführliche Einführung.

Über HTTP/2

Der Zweck von HTTP/2 besteht darin, die Latenz durch die Unterstützung des vollständigen Anforderungs- und Antwort-Multiplexings zu reduzieren, den Protokoll-Overhead durch effektive Komprimierung von HTTP-Header-Feldern zu minimieren und Unterstützung für die Anforderungspriorisierung hinzuzufügen und Server-Push.

Server Push

HTTP/2 Server Push ermöglicht es dem Server, Ressourcen an den Browser zu senden, bevor der Browser sie anfordert.

Bevor wir zu HTTP/2 wechseln, sehen wir uns an, wie es mit HTTP/1 funktioniert:

Bei HTTP/1 sendet der Client eine Anfrage an den Server, der Server gibt zurück eine HTML-Datei, die viele Links zu externen Ressourcen (.js-, .css- usw. Dateien) enthält. Wenn der Browser diese anfängliche HTML-Datei verarbeitet, beginnt er, diese Links zu analysieren und sie einzeln zu laden.

Sehen Sie sich unten das Bild des Demo-Ladevorgangs an. Beachten Sie die unabhängigen Anfragen auf der Zeitleiste und die Initiierung dieser Anfragen:

HTTP/1-Ressourcenladen

So funktioniert HTTP/1, das ist wie wir die App im Laufe der Jahre entwickelt haben. Warum es ändern?

Das Problem beim aktuellen Ansatz besteht darin, dass der Benutzer warten muss, bis der Browser die Antwort analysiert, den Link erkennt und die Ressource erhält. Dies verzögert das Rendern und erhöht die Ladezeiten. Es gibt einige Lösungen wie das Inlining einiger Ressourcen, aber das führt auch dazu, dass die erste Reaktion immer größer wird.

Hier kommt die HTTP/2-Server-Push-Funktion ins Spiel, da der Server Ressourcen an den Browser senden kann, bevor der Browser sie anfordert.
Sehen Sie sich das Bild unten einer Website an, die denselben Dienst über HTTP/2 anbietet. Sehen Sie sich die Timeline und den Launcher an. Sie können sehen, dass HTTP/2-Multiplexing die Anzahl der Anfragen reduziert und die Ressourcen sofort mit der ersten Anfrage gesendet werden.

HTTP/2 Server Push

Sehen wir uns noch heute an, wie man HTTP/2 Server Push in Node.js verwendet, um die Ladezeiten von Clients zu beschleunigen.

Ein Node.js HTTP/2-Server-Push-Fall

Durch Laden des integrierten http2-Moduls können wir unseren Server genauso erstellen, wie wir das https-Modul verwenden.

Der interessante Teil besteht darin, die anderen Ressourcen zu pushen, wenn index.html angefordert wird:

const http2 = require('http2') 
const server = http2.createSecureServer( 
 { cert, key },
 onRequest
)

function push (stream, filePath) { 
 const { file, headers } = getFile(filePath)
 const pushHeaders = { [HTTP2_HEADER_PATH]: filePath }

 stream.pushStream(pushHeaders, (pushStream) => {
 pushStream.respondWithFD(file, headers)
 })
}

function onRequest (req, res) { 
 // Push files with index.html
 if (reqPath === '/index.html') {
 push(res.stream, 'bundle1.js')
 push(res.stream, 'bundle2.js')
 }

 // Serve file
 res.stream.respondWithFD(file.fileDescriptor, file.headers)
}
Nach dem Login kopieren

Auf diese Weise werden die Ressourcen bundle1.js und bundle2.js zum Durchsuchen gesendet, noch bevor sie dazu aufgefordert werden für sie Gerät.

Sie können den vollständigen Fall ansehen: https://github.com/RisingStack/http2-push-example

HTTP/2 & Node

HTTP/2 kann helfen Wir optimieren die Kommunikation zwischen unseren Clients und Servern auf vielfältige Weise.

Mit Server Push können wir Ressourcen an den Browser senden und so die anfängliche Ladezeit des Benutzers verkürzen.

Verwandte Empfehlungen:

Erklärung von HTML5-Server-Push-Ereignissen

Detaillierte Einführung von Server-Push-Ereignissen

PHP-Web-Echtzeitnachrichten-Hintergrundserver-Push-Technologie GoEasy

Das obige ist der detaillierte Inhalt vonNode.js-Lerntutorial HTTP/2-Server-Push-Beispielfreigabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Feb 18, 2024 pm 08:41 PM

Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode

Wie implementiert man HTTP-Streaming mit C++? Wie implementiert man HTTP-Streaming mit C++? May 31, 2024 am 11:06 AM

Wie implementiert man HTTP-Streaming mit C++?

HTTP 200 OK: Verstehen Sie die Bedeutung und den Zweck einer erfolgreichen Antwort HTTP 200 OK: Verstehen Sie die Bedeutung und den Zweck einer erfolgreichen Antwort Dec 26, 2023 am 10:25 AM

HTTP 200 OK: Verstehen Sie die Bedeutung und den Zweck einer erfolgreichen Antwort

So beheben Sie den HTTP 503-Fehler So beheben Sie den HTTP 503-Fehler Mar 12, 2024 pm 03:25 PM

So beheben Sie den HTTP 503-Fehler

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript

Welcher Statuscode wird bei einem HTTP-Anfrage-Timeout zurückgegeben? Welcher Statuscode wird bei einem HTTP-Anfrage-Timeout zurückgegeben? Feb 18, 2024 pm 01:58 PM

Welcher Statuscode wird bei einem HTTP-Anfrage-Timeout zurückgegeben?

Die KI-Ära von JS ist da! Die KI-Ära von JS ist da! Apr 08, 2024 am 09:10 AM

Die KI-Ära von JS ist da!

See all articles