Denkt man an die Zeit zurück, als Computer noch als Brotkisten (Commodore 64, ATARI 800XL) bezeichnet wurden, erinnert man sich auch daran, wie man beim Programmieren jedes unnötige Byte zu vermeiden suchte. Das ist heute nicht mehr der Fall, da moderne Rechner eine Leistungsfähigkeit haben, die die kühnsten Träume der Brotkistenbesitzer um ein Vielfaches übertreffen.
Trotzdem lohnt es sich auch heute, sich über die Verwendung unnötiger Bytes Gedanken zu machen. Auch wenn das Internet immer schneller wird, so ist es doch so, dass der Transport der Daten einer Webseite in Datenpaketen von 1500 Bytes (TCP/IP) abgewickelt wird. Schaut man sich eine Webseite unter diesem Gesichtspunkt einmal genauer an, ergibt sich noch einiges an Optimierungs-Potential um den Datentransfer einzugrenzen und den Webserver zu entlasten.
Es braucht hier nicht das ganze Transmission Control Protocol (TCP) abgehandelt zu werden, darüber informiert Wikipedia sehr umfangreich.
Hier interessiert uns nur der Teilbereich der TCP-/IP-Paket-Größe, und wie man sie für die Optimierung des Datentransfers nutzen kann.
Damit die Datenpakete ordnungsgemäß übertragen werden können verfügen sie über einen Header, der Absender und Empfänger, sowie Informationen über die Daten ansich, enthält. Dies sind bei einer Internetverbindung via DSL:
Diese 48 Header-Bytes müssen von der Datenpaket-Grösse von 1500 Bytes abgezogen werden, so dass für die Nutzdaten noch 1452 Bytes für die Übertragung zur Verfügung stehen.
Fordert der Browser eine Webseite bei einem Webserver an, so segmentiert dieser die zu übermittelnden Daten (die Webseite, Bilder, CSS und JavaScript) in TCP-Segmente mit jeweils 1452 Bytes Nutzdaten. Diese werden der Reihe nach an den Browser übertragen, und dieser bestätigt den Empfang der Datenpakete.
Im optimalen Fall kommen alle Datenpakete schön der Reihe nach an, und der Browser muss nur den Empfang des letzten Paketes bestätigen. Es ist aber auch möglich, dass ein Teil der Pakete eine andere Route durch das Internet nehmen, und z.B von Frankfurt über Stuttgart nach München gelangen, andere dagegen einen Weg über Würzburg nehmen. In diesem Fall müssen die Pakete einzeln bestätigt werden, was naturgemäß mit einem höheren Datentransfer einhergeht.
Es gibt mehrere Möglichkeiten, den Datentransfer zu verringern.
Es ist erstaunlich, wieviele Beytes mit Leerzeichen, Zeilenumbrüchen, Tabs und Kommentaren im Quelltext einer Seite zusammenkommen.
Um einmal reale Daten zu bekommen, habe ich den Inhalt der Startseite eines beliebten Blogs entfernt, und nur die Leerzeichen, Tabs, Zeilenumbrüche und Quelltext-Kommentare übrig gelassen, und als Text-Datei gespeichert. Es kamen 5,51 KB (5.649 Bytes) zusammen, die weder für den User, noch für die Darstellung im Browser notwendig waren. In Datenpakete umgerechnet sind das 3,8 Datenpakete mehr, die übertragen werden müssen.
Gleiches gilt für die CSS-Datei(en). Auch hier lohnt es sich, alle überflüssigen Informationen zu elemenieren.
Das alle Style-Angaben auch wirklich in der CSS-Datei stehen, und nicht doch noch viele Formatierungen im HTML-Quelltext vorgenommen werden, gilt heute als Standard. Trotzdem sieht man es immer wieder, wie auch bei dem untersuchten Blog, dass es doch nicht ordentlich gemacht ist. Auch sollten mehrere CSS-Dateien zu einer zusammengeführt werden.
Auch bei Java-Script lohnt es sich, diese zusammenzuführen, und zu bereinigen. Häufig sieht man viele kleine Java-Scripte, die duraus zusammengefasst werden können. Ausnahmen sind natürlich solche Scripte, welche von einem Fremdanbieter, wie Google AdSense, eingebunden sind.
Eine weitere Möglichkeit bietet sich, wenn man mehrere kleinere Grafiken wie Buttons oder Smilies in eine Bilddatei speichert, und diese als CSS-Sprites einbindet.
Nehmen wir den oben genannten Blog, und unterstellen ihm täglich 3.000 Besucher mit durchschnittlich 3 Seitenaufrufen, und rechnen nocheinmal 4000 Seitenaufrufe durch Crawler (Google, Yahoo, etc) dazu, kommen wir alleine mit den 4 (3,8) überflüssigen Datenpaketen auf 52.000 Datanpakete extra pro Tag. Das mach im Durchschnitt 2.166 Pro Stunde, 36 pro Minute und 0,6 pro Sekunde.
Würde man den Beispiel-Blog soweit optimieren, dass 15 Datenpakete eingespart werden könnten, würde man pro Tag schon 195.000 Datenpakete einsparen.
Sicherlich muss man heute nicht mehr auf jedes Byte achten, wie zur Zeit der Brotkisten. Doch lohnt es sich immer noch, unnötige Bytes zu vermeiden. Ein einziges Byte zuviel, kann ein extra Datenpaket verursachen, welches vom Webserver abgearbeitet werden muss.
Auch Google honoriert schnelle ballastfreie Seiten seit der Einführung von Page-Speed. Bei einem anderen Projekt brachte die Optimierung der o.g. Punkte und die zusätzliche gZip-Komprimierung eine Verdoppelung der Crawler-Zugriffe. Doch dazu gibt es dann einen eigenen Beitrag.
« Eine Affiliate Marketing Seite mit WordPress – Landing Pages mit WordPress »
Die Kommentarfunktion ist zur Zeit leider deaktiviert.
© 2010 alles-mit-links – by AGENTUR Matthias Griesbach | www.alles-mit-links.net | BLACKINK WebKatalog
Ich habe meinen Blog auch etwas optimiert und spare nun mehr als 1MB pro Aufruf. Das passiert halt wenn man sich ein fertiges Theme aussucht.
Ich habe viele Tipps auf http://page-speed.net/ gefunden, das hat geholfen.
Kommentar: Rollo – 07. Juni 2011 @ 15:01
Auf Empfehlung im Forum von Seitenreport.de (Gruß + Dank dorthin!) habe ich kürzlich den Zeichensatz auf utf-8 umgestellt. Ich hätte nie gedacht, wieviel Code die “langen” Umlaute, ß und Sonderzeichen brauchen, der eingespart werden kann.
Kommentar: Weingut Fuchs – 10. Juni 2011 @ 19:12
Auch mit der relativen Verlinkung kann man einige viele Bytes einsparen. Das ist eine Sache, die ich mit diesem Blog als nächstes machen möchte. Das Problem ist nur, dass das bei Links auf Textanker aus den Kategorien, Tags und Archiven nicht klappt. Mal sehen ob es dafür eine Lösung gibt.
Auch die Permalink-Struktur könnte noch verbessert werden. Es geht auch ohne das “index.php” in den Links. Und wenn dann schon umgestellt wird, kann auch das “www” entfalle, das http:// dann auch.
Wendet man das auch noch bei URL’s im Header an, ist ein weiteres Datenpaket pro Seitenaufruf durchaus möglich.
Es wird sicher eine spannende Aufgabe, dies umzusetzen, und bei Seitenreport zu überprüfen.
Kommentar: alles-mit-links – 11. Juni 2011 @ 00:04
… [Trackback] …
[...] There you will find more Infos: alles-mit-links.de/index.php/2011/06/mit-bits-und-bytes-den-datentransfer-eingrenzen/ [...] …
Trackback: giant twist comfort cs – 12. November 2011 @ 04:29