Der Martin: Performance-Optimierung

Beitrag lesen

Hallo,

ich habe das dumpfe Gefühl, es besteht immer noch erheblicher Optimierungsbedarf bei der Forensoftware bzw. deren Web-Schnittstelle.

Mir fällt immer wieder unangenehm auf, dass selbst das Laden der Forenübersicht http://forum.selfhtml.org/ ziemlich lange dauert (andere Seiten natürlich auch). Mein Opera, der in der Fortschrittsanzeige beim Laden sowohl die verstrichene Zeit, als auch die übertragene Datenmenge live mitzählt, kommt für die genannte Übersichtsseite regelmäßig auf über 30, manchmal sogar über 40 Sekunden und rund 1.2MB.

Inzwischen habe ich die Ressource http://forum.selfhtml.org/application-435e2eab22e5fc9b9cbc7633efb70856ed7c9059c05d017169d52b1d2b61f563.js als Übeltäter ausgemacht. Die hat allein etwa 1.1MB und kommt nur sehr, sehr langsam über den Draht. Ein isolierter Request auf diese Ressource mit wget weist eine Ladezeit von 38s aus. Das entspricht dem Tempo eines alten Telefonmodems bei schlechter Verbindung.

Und anscheinend wird diese Ressource auch nicht gecacht, oder wenn, dann nur für sehr kurze Zeit, denn sie wird bei nahezu jedem Seitenabruf wieder neu übertragen. Sowohl von meinem alten Opera, als auch vom Firefox auf meinem Rechner, als auch vom Firefox auf dem Rechner eines Kunden, auf dem ich nur eingeschränkter User bin und auch den Firefox weitgehend in der Defaultkonfiguration nutze.

Vor allem das Nicht-Cachen ist für mich rätselhaft, da die Header doch eigentlich eine ordentliche Cache-Dauer empfehlen, wie ein Auszug aus der LiveHTTP-Extension zeigt:

GET /assets/application-435e2eab22e5fc9b9cbc7633efb70856ed7c9059c05d017169d52b1d2b61f563.js HTTP/1.1
Host: forum.selfhtml.org
[...]
Accept: */*
Accept-Language: en-us,en;q=0.7,de;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://forum.selfhtml.org/
[...]
Connection: keep-alive

HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Fri, 08 May 2015 11:20:55 GMT
Content-Type: application/x-javascript
Content-Length: 1112156
Connection: keep-alive
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000, public
Accept-Ranges: bytes

Interessant finde ich, dass meine Browser bei sämtlichen untergeordneten Ressourcen (Bilder, Stylesheets) brav mit einem If-Modified-Since-Header anfragen, dann erwartungsgemäß ziemlich flott ein "304 Not Modified" als Antwort bekommen - nur bei dem oben erwähnten Javascript-Monster geht immer ein bedingungsloser Request raus, der mit 200 und der vollen Datenmenge beantwortet wird.

Warum?

So long,
 Martin