Michael Schröpl: Datei oder nicht?

Beitrag lesen

Hi Sven,

Die externe CSS-Datei wird insgesamt einmal geladen
und befindet sich dann auf der lokalen Festplatte,
vermutlich auch im lokalen RAM des Rechners.

Das schon. Aber der Inhalt der externen CSS-Datei ist halt leider in den meisten Fällen völlig irrelevant.

In fast allen Fällen wird nämlich viele viele Male immer wieder vom Browser beim Server nachgefragt, ob denn der Inhalt dieser Datei auch wirklich immer noch im Cache gehalten werden darf. Manchmal mehrfach innerhalb derselben Sekunde durch denselben Browser!

In jeder HTML-Datei enthaltene <style>-Angaben
müssen immer wieder durch's Modem gequält werden -
das erhöht die Ladezeit!

Wenn sie auf diese Weise aber komprimiert werden können (mod_gzip), dann erhöht das die Ladezeit nur ganz marginal. Und wenn sie sogar auf weniger als 1 KB komprimiert werden können - was bei CSS ja nicht so ungewöhnlich wäre - dann ist das schon mal billiger als ein zusätzlicher HTTP-Request, der genau 0 Bytes Information und einen HTTP-Status 304 bewirkt, dafür aber 1 KB Traffic in Form zweier HTTP- und etlicher TCP-Header kostet, ganz zu schweigen von den diversen Handshake-Aktionen während des Verbindungsaufbaus.

Man kann zwar durch serverseitige Techniken
erreichen, daß man nur eine Datei mit CSS-
Formatierungen ändert, und die dann in alle HTML-
Dateien dynamisch eingefügt wird, aber das ist von
allen Lösungen die schlechteste: Der Server wird
belastet, die Leitung wird belastet, und der User
hat nichts davon.

Exakt das tue ich - und der Benutzer hat sehr wohl etwas davon, nämlich eine schnellere Übertragung von insgesamt weniger Daten. Jedenfalls dann, wenn es sehr viele sehr kleine CSS-Dateien sind - und das ist zumindest bei uns der Normalfall.

Sehr wenige sehr große CSS-Dateien würden sich in einem Cache gut machen - wenn einerseits die Benutzer ihre Browser richtig konfigurieren würden (tun sie leider nicht) und andererseits der Server entsprechende Angaben mitsenden würde, um den Browser von diesen unsinnigen Prüfungen abzuhalten (das zu tun ist Serverkonfiguration, geht also nicht von selbst - und es hat leider auch seine Nachteile).

Und so riesengroß werden CSS-Dateien nicht.
Die CSS-Datei für's Forum hier hat knapp 7 KB,
die für SelfHTML hat nur knapp 2 KB. Ich habe
eigentlich noch keine CSS-Dateien gesehen, die
größer waren als 20 KB.

Eben. Und je kleiner CSS-Dateien sind, desto schrecklicher sind die HTTP-Header dazu - und desto
besser wird die SSI-Lösung.

Externe Dateien sind in jedem Fall besser!

Die Existenz separater Dateien ist schon aus Wartungsgründen zu bevorzugen.
Aber ob sie dann serverseitig dynamisch eingebunden werden sollten oder clientseitig, das hängt von einer ganzen Reihe von Parameter ab, die man sehr gründlich durchrechnen sollte ...

Viele Grüße
      Michael