Fragen? Antworten! Siehe auch: Alternativlos
Das klingt erst mal schlau, bis man sich näher mit HTTP auseinandersetzt. Denn da ist das so, dass die externen Referenzen hauptsächlich statisch sind, während sich das HTML auf der Seite ändert. Der Stylesheet ändert sich vielleicht einmal im Jahr, wenn es hochkommt, die Javascript-Library ändert sich, wenn mal wieder ein neuer Browser auf den Markt kommt, und die Inline-Bilder ändern sich einmal am Tag. HTTP hat das erkannt und bietet dafür eine Optimierung an, If-Modified-Since. Hier ist ein typischer HTTP-Request:
GET /rss.xml?html HTTP/1.1Der Client sagt hier also: ich war zuletzt um 19:07:32 GMT hier. Der Server sieht sich das an und antwortet:
Host: blog.fefe.de
Connection: Keep-Alive
User-Agent: Akregator/1.5.1; syndication
If-Modified-Since: Thu, 12 Nov 2009 19:07:32 GMT
Accept: text/html, image/jpeg;q=0.9, image/png;q=0.9, text/*;q=0.9, image/*;q=0.9, */*;q=0.8
Accept-Encoding: x-gzip, x-deflate, gzip, deflate
Accept-Charset: utf-8, utf-8;q=0.5, *;q=0.5
Accept-Language: en-US, en
HTTP/1.1 304 Nix NeuesDas ist das HTTP-Modell, um unnütze Daten nicht zu übertragen. Für RSS ist dieser Fall häufig, aber noch viel häufiger ist er für Stylesheet, favicon.ico, Inline-Bilder und externe Javascript-Dateien (gut, die habe ich ja sowieso gar nicht bei mir). Das ist ja gerade der Grund, wieso man Javascript-Bibliotheken in eigene Dateien auslagert. Weil die sich eben nicht ändern und dann nicht bei jedem Zugriff neu übertragen werden sollen.
Google schlägt jetzt vor, der Server soll bei der Anfrage nach der Webseite auch gleich ungefragt die ganzen (ungeänderten) Dateien mitschicken. Das mag zwar im Benchmark die Latenz senken, aber es würde das Web-Verkehrsaufkommen im Internet mal eben verdoppeln. Beim ehemaligen Nachrichtenmagazin würde dann bei jedem Webseitenklicken das Spiegel-Logo mitübertragen. Wenn ihr mal sehen wollt, was das ausmacht, dann geht einmal zu spiegel.de, löscht einmal den Cache, startet den Browser neu, und geht nochmal zu spiegel.de Das dauert gleich fünfmal so lange!
Daher glaube ich, dass es Google hier um was anderes geht. Die wollen nicht wirklich die Stylesheets als Server Push machen. Die wollen die Google Ads als Server Push machen. User werden nämlich ungehalten, wenn eine Webseite langsam lädt, weil die Werbung so lange braucht. Und wenn wir das erst mal so machen, dann ist auch der zentrale Vorteil von Werbeblockern weg. Weil die Seite dann eben nicht schneller lädt mit Werbeblocker. Es flimmert nur nicht mehr so.
Oh und völlig unabhängig davon: der Server müsste, damit das überhaupt funktioniert, die Webseiten parsen und die Abhängigkeiten analysieren können. Das ist eine immense Komplexität, die man nicht im Webserver haben will. Schon aus Sicherheitsgründen nicht. Je komplexer, desto angreifbarer.
Oh und wenn ihr euch mal den HTTP-Request da oben anguckt: über die Hälfte davon ist vollständig überflüssig. Das sollte man nicht komprimieren, sondern einfach mal den überflüssigen Mist rausnehmen.