Proxy-Server-Software, die Javascript einbetten/bündeln kann

Ich muss den Zugriff auf eine bestimmte Website beschleunigen, was furchtbar langsam ist. Ich habe keinen Zugriff auf den Quellcode/die Konfiguration dieses Servers. Nach der Analyse verstehe ich das Problem:

  • Der Server ist weit vom Standort des Kunden entfernt, daher ist die Latenz hoch – etwa 400 ms
  • Die HTML-Seiten haben viele <script src="...">Tags, von denen jeder eine separate Anfrage zum Laden erfordert.
  • Der Browser sendet nur 6-8 Anfragen gleichzeitig, daher würde es mindestens 5 Sekunden dauern, um alle js-Dateien für eine Seite abzurufen

Das Zwischenspeichern der js-Dateien ist nicht möglich, da js-Dateiname und -Inhalt dynamisch vom Server generiert werden.

Also versuche ich, einen (Reverse?) Proxy-Server mit geringer Latenzverbindung zum ursprünglichen Server einzurichten. Wenn der Kunde eine .html-Datei anfordert, sollte der Proxy-Server die Datei vom ursprünglichen Server abrufen, analysieren, alle finden <script src="...">, das Javascript abrufen und den Javascript-Code in das <script>Tag einbetten (und src="...") entfernen und dann zurückgeben gebündeltes html. Auf diese Weise muss der Browser keine zusätzlichen Anfragen senden, um js-Dateien zu erhalten, und die Latenz nimmt nicht zu

Die Frage(n) :

  • Gibt es eine Proxy-Server-Software mit dieser Funktion? Oder vielleicht ein Nginx-Modul/Skript?
  • Wenn der Browser des Kunden HTTP/2 unterstützt, wird ein HTTP/2-Proxyserver das Problem lösen?
  • Haben Sie eine andere Lösung für dieses Problem?

Bitte helfen Sie, danke.

Antworten (1)

Google hat ein Nginx- und Apache-Modul mit vielen nützlichen Optimierungen entwickelt. Eine davon ist die Javascript-Minifizierung und -Verkettung. Ich habe es noch nie ausprobiert, aber es scheint das zu sein, wonach Sie suchen https://developers.google.com/speed/pagespeed/module/filter-js-combine

Eine andere Lösung wäre die Verwendung von etwas wie Webpack, um alle Ihre Javascript-Dateien zu bündeln. Aber es würde ein paar Änderungen an Ihrer Codebasis erfordern.

Ich danke Ihnen für Ihre Hilfe. Nach Ihrem Link habe ich ein weiteres Modul gefunden, das meinen Anforderungen zu entsprechen scheint: developer.google.com/speed/pagespeed/module/filter-js-inline . Ich probiere es aus, werde berichten ob es funktioniert.