Heim > Web-Frontend > js-Tutorial > Über HTTP/2-Server-Push

Über HTTP/2-Server-Push

php中世界最好的语言
Freigeben: 2017-12-30 18:00:23
Original
2400 Leute haben es durchsucht

Bevor wir über HTTP/2-Server-Push sprechen, müssen wir zunächst wissen, dass HTTP/2 darauf ausgelegt ist, viele Mängel von HTTP/1.x zu beheben. Moderne Webseiten nutzen viele Ressourcen: HTML, Stylesheets, Skripte, Bilder und so weiter. In HTTP/1.x muss jede dieser Ressourcen explizit angefordert werden. Dies kann ein langsamer Prozess sein. Der Browser ruft also zunächst den HTML-Code ab und erhält dann schrittweise weitere Ressourcen, während er die Seite analysiert und auswertet. Da der Server darauf warten muss, dass der Browser jede Anfrage stellt, ist das Netzwerk oft inaktiv und wird nicht ausreichend genutzt.

Um die Latenz zu verbessern, hat HTTP/2 Server-Push eingeführt, der es dem Server ermöglicht, Ressourcen an den Browser zu pushen, bevor der Browser sie explizit anfordert. Ein Server weiß oft, dass eine Seite viele zusätzliche Ressourcen benötigt und kann mit dem Pushen dieser Ressourcen beginnen, wenn er auf die erste Anfrage des Browsers antwortet. Dadurch kann der Server ein potenziell inaktives Netzwerk vollständig nutzen und so die Seitenladezeiten verbessern.

serverpush.svg.png

Auf der Protokollebene wird HTTP/2-Server-Push durch push_promise-Frames gesteuert Ein PUSH_PROMISE beschreibt eine Anfrage, also serverseitiges prädiktives Browsing . Der Server stellt die Anfrage sofort aus. Sobald der Browser das PUSH_PROMISE empfängt, weiß er sofort, dass der Server diese Ressource übertragen wird. Wenn der Browser später feststellt, dass er die Ressource benötigt, wartet er, bis der Push abgeschlossen ist, anstatt eine neue Anfrage zu senden. Dies reduziert die Zeit, die der Browser damit verbringt, auf das Netzwerk zu warten.

Server-Push im Net/http-Paket

go1.8 führt Unterstützung für Push-Antworten von http.Server ein. Diese Funktion ist verfügbar, wenn der laufende Server ein HTTP/2-Dienst ist und eingehende Verbindungen HTTP/2 verwenden. In jedem HTTP-Handler können Sie feststellen, ob http.ResponseWriter Server-Push unterstützt, indem Sie prüfen, ob er die neue http.Pusher-Schnittstelle implementiert.

Wenn der Server beispielsweise weiß, dass app.js zum Rendern der Seite angefordert wird, kann der Handler einen Push initiieren, wenn http.Pusher verfügbar ist.

 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if pusher, ok := w.(http.Pusher); ok {
            // Push is supported.
            if err := pusher.Push("/app.js", nil); err != nil {
                log.Printf("Failed to push: %v", err)
            }
        }
        // ...
    })
Nach dem Login kopieren
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie die obige Einführung gelesen haben. Weitere spannende Informationen finden Sie auf der chinesischen PHP-Website

Andere verwandte Artikel!

Verwandte Lektüre:

Wie sieht die JS-Engine aus, wenn sie ausgeführt wird?

Wie natives JS AJAX und JSONP implementiert

So passen Sie das Konsolenobjekt bei Verwendung von JS an

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

Verwandte Etiketten:
Quelle:php.cn
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