2015-11-05 8 views

Antwort

18

Ja, unterstützt Nginx HTTP/2 Server-Push seit version 1.13.9 am 20. Februar veröffentlicht 2018.

Das Nginx-Team in den ursprünglichen 1.9.5 blog post wies darauf hin, dass es nicht unterstützt damals.

+0

Ab v 1.11.4 auf 13. September 2016, ist dies immer noch wahr. –

+0

Irgendwelche Neuigkeiten wann Server Push wird zu Nginx hinzugefügt? Wartet so schlecht ... – n1try

-5

Sie müssen dafür mit einem Nginx plus Abonnement https://www.nginx.com/blog/http2-r7/ bezahlen.

Apache bietet es kostenlos

https://httpd.apache.org/docs/2.4/mod/mod_http2.html#h2push

+1

Von Ihrer URL: "Die Funktion" Server Push ", die im HTTP/2 RFC definiert ist, wird in dieser Version nicht unterstützt. Zukünftige Versionen von NGINX Plus könnten diese enthalten." –

+0

Es gibt zwei URLs, die ich gepostet habe, die besagt, dass sie es nicht unterstützt? –

+0

Vom ersten Link: "Die im HTTP/2-RFC definierte Funktion" Server Push "wird in dieser Version nicht unterstützt. Zukünftige Versionen von NGINX Plus könnten sie enthalten." –

14

Edit:

Nginx unterstützt HTTP/2 Server-Push seit v1.13.9, am 20. Februar veröffentlicht 2018.

Ältere Antwort:

N Ginx unterstützt ab März 2017 keinen HTTP/2-Server-Push (v1.11).

Owen Garrett bei nginx hat die Gründe wie folgt zusammengefasst:

  • es sich um eine nicht-essentielle und optionaler Bestandteil von http/2

  • , wenn der Kunde bereits die Ressource gecached hat, dann Indem Sie es zu ihnen schieben, verschwenden Sie unnötigerweise Bandbreite.

  • Server-Push-Spezifikationen könnten sich in Zukunft ändern.

  • Link-Header als Hinweise ist nützlich, aber die Verwendung von Web-Entwicklern war gering.

  • Server Push ist als Teil von SPDY verfügbar und wurde von vielen Webentwicklern nicht verwendet.

Lesen Sie seine ursprünglichen Kommentare here. Diese table beschreibt genau die Vor- und Nachteile von Serverhinweisen vs Server Push.

Persönlich enttäuscht mich, weil ich denke, dass dies eine wertvolle Funktion für Web-Entwickler wäre, die die Zeit investieren, um die Seitengeschwindigkeit zu optimieren. Ich weiß auch, dass einige große CDNs wie Cloudflare ihre eigene Version innerhalb von nginx implementiert haben, um den Seiten-Download zu optimieren.

+1

Es ist nicht wirklich eine Verschwendung von Bandbreite, wie man meinen könnte. Die Header für die verschobenen Objekte werden zuerst gesendet (vor der angeforderten Seite), so dass der Client etwas Zeit haben sollte, Server-Pushs abzubrechen. – StephenKing

+0

@StephenKing Wenn Server-Push implementiert wurde, würde der Client wahrscheinlich keine Chance bekommen, zurückgesetzt zu werden, bevor die Frames, die sich auf die Server-Pushs beziehen, bereits eingetroffen sind. Es ist also wahrscheinlich verschwenderisch. Es gibt jedoch einige offensichtliche Lösungen, um keine Assets zu verschieben, die wahrscheinlich zwischengespeichert werden, einschließlich der Verwendung von Cookies und einfacher Protokollhistorie. –

+8

Ich liebe, wie Owen sagte, "Nutzung von Web-Entwicklern niedrig gewesen ist" - ist das nicht _because_ Nginx unterstützt es nicht ?! – developius

3

Unterstützung für HTTP/2 Server-Push hinzugefügt wurde per 8. Februar bis nginx, 2018:

https://hg.nginx.org/nginx/rev/641306096f5b

+0

Ich habe es einfach versucht, funktioniert super - Sie können für Ihren statischen Inhalt (Server von NGINX direkt) sowie Backends (solange das Backend die Links über 'Link'-Header werben) festlegen. Ich habe dokumentiert, was ich hier gelernt habe: https://ops.tips/blog/nginx-http2-server-push/ –