2017-09-29 1 views
0

Von dem, was ich gelesen habe (was einen Smashing Mag Artikel und einen Akamai Artikel beinhaltet), besteht die Implementierung von HTTP2 Server Push einfach darin, den Seiten meiner Website einen oder zwei Header hinzuzufügen. Zum Beispiel:Versuchen, HTTP2 zu implementieren Push

Link: </css/styles.css>; rel=preload; as=style 
Link: </js/common.js>; rel=preload; as=script 

Ist das korrekt? Ist das wirklich so einfach?

Antwort

1

Es hängt ganz davon ab, welchen Webserver Sie betreiben und wie es HTTP/2 Push implementiert (wenn es überhaupt funktioniert).

Verwenden von Link-Header funktioniert zum Beispiel für Apache. Server-Push wird derzeit für Nginx nicht unterstützt. Einige CDNs implementieren es auch mit Link-Headern.

Aber auch wenn es so einfach zu aktivieren ist, sollte man wohl nicht ohne weiteres nachdenken. Das Problem ist, dass dies wahrscheinlich die erste Ladung beschleunigt, und Ihr JavaScript und CSS werden danach zwischengespeichert (Sie cachen Ihre Ressourcen clientseitig, nicht wahr? Wenn nicht, dann schauen Sie sich nicht einmal fortgeschrittene Themen wie HTTP an/2 bis du die Grundlagen richtig hast). Wenn Sie also drücken, wenn es bereits zwischengespeichert ist, ist es eine Verschwendung. Jetzt kann ein Browser einen Push stoppen, wenn er diese Ressource nicht benötigt, weil er es bereits in diesem Beispiel hat, aber das kostet Zeit und Aufwand und für kleine Ressourcen (wie CSS oder JavaScript) wird es wahrscheinlich ziemlich viel geben heruntergeladen von der Zeit, die Sie es stoppen.

Sie sollten also nur drücken, wenn die Wahrscheinlichkeit groß ist, dass der Client die Ressource benötigt. Cache-Digests wird eine Möglichkeit für den Client sein, dem Server mitzuteilen, welche Ressourcen er zwischengespeichert hat, und so dem Server zu helfen, zu entscheiden, ob er pushen will oder nicht, aber es ist immer noch in Arbeit und nicht weg, wenn irgendwelche Browser es noch unterstützen. In der Zwischenzeit habe ich eine einfache Cookie-basierte Implementierung hier in Apache gemacht, die für Sie von Interesse sein könnte: https://www.tunetheweb.com/performance/http2/http2-push/

+0

Danke für die Antwort - Ich habe einen Link: Header auf meiner Website Titelseite hinzugefügt (https: //www.rgraph.net), aber laut der Initiator-Spalte im Chreses-Wasserfalldiagramm wird der Download von styles.css nicht durch Push ausgelöst. Obwohl ich gesagt habe, dass wenn ich die URL im Header Link: zu etwas ändere, das nicht existiert, führt dies dazu, dass 404 in der Liste der Anfragen (im Netzwerk-Panel) auftritt. Vielleicht funktioniert es - vielleicht nicht. – Richard

+0

Das von Ihnen verwendete Asset muss von der Seite verwendet werden. Wenn Sie auf Ihre Site schauen, versuchen Sie, foo.css zu pushen, aber 1) das nicht existiert und 2) es wird nirgends auf Ihrem HTML referenziert, also wird sinnlos gepusht. –

+0

Das war nur ein Test. Die Sache, die ich wirklich pushen möchte, ist styles.css - also habe ich dieses PHP hinzugefügt, um den Header Link hinzuzufügen: header ('Link:; rel = preload; as = style'); Die Kopfzeile wird gesendet und ich kann dies im Chrome-Netzwerkfeld sehen - aber der Initiator erwähnt nicht "Push". – Richard

Verwandte Themen