Boehrsi.de V7 - Bilder serverseitig optimieren
Einer der größten Datenproduzenten bei der Übertragung von Homepage-Daten sind Bilder. Selbige einfach wegzulassen sollte man allerdings nicht versuchen, denn was wäre eine Seite ohne Bilder. Aus diesem Grund muss man Bilder entsprechend optimieren. Das bedeutet zum einen die richtigen Formate zu verwenden und auf der anderen Seite die Bilder mit verschiedenen Tools so anzupassen, dass man hier und dort ein paar Bits und Bytes sparen kann. Denn insgesamt erreicht man dadurch tatsächlich eine spürbare Verkleinerung der Daten.
Formate: Hier gibt es wenig spannendes, denn ich nutze nach Möglichkeit PNG Dateien oder aber JPG. Beide sind im Bereich des Internets weit verbreitet und es gibt diverse Tools um diese Dateien zu optimieren. Standard ist bei mir PNG, wobei einige Programme oder Geräte JPG Dateien produzieren, wie z.B. mein Handy und diese konvertiere ich nicht.
Optimieren: Hat man gute Bildformate gewählt ist man schon einmal auf der sicheren Seite, doch es geht noch mehr und gerade bei vielen Seitenaufrufen über mobile Geräte zählt jedes Byte. Aus diesem Grund habe ich ein für mich relativ gutes serverseitiges System eingerichtet, welches nach initialer Einrichtung komplett automatisch funktioniert. Mein Grundaufbau sieht dabei wie folgt aus:
- jpegoptim, optipng und pngout installieren. Dabei sollte bis auf pngout alles direkt via Paketverwaltung installiert werden können. Pngout open_in_new muss manuell heruntergeladen und installiert werden, bzw. war dies zumindest bei mir unter Ubuntu 12.04 der Fall.
- Nun habe ich initial alle Bilder gesucht und mit den passenden Tools bearbeitet. Die Erklärung der Parameter könnt ihr den jeweiligen Manuals entnehmen (jpegoptim open_in_new, optipng open_in_new, pngout open_in_new). Dieser Vorgang dauert dann eine gewisse Zeit und benötigt natürlich auch etwas Rechenleistung.
find /path/to/your/images/ -iname '*.jp*g' | xargs -n 1 jpegoptim -o -t --strip-all
find /path/to/your/images/ -iname '*.png' | xargs -n 1 optipng -o2
find /path/to/your/images/ -iname '*.png' | xargs -n 1 /path/to/pngout/pngout
- Um dies im produktiv Betrieb nicht immer wieder durchführen zu müssen habe ich direkt im Anschluss einen Cronjob erstellt, welcher die oberen Scripte leicht angepasst ausführt. Konkret füge ich in den Suchbefehl einen Zeitfilter mit ein, welcher nur Dateien sucht die maximal einen Tag alt sind. Dies sieht dann wie folgt aus: find /path/to/your/images/ -mtime -1 -iname '*.jp*g'.
- Der Cronjob wird täglich in der Nacht ausgeführt und sorgt somit dafür das alle Bilder optimiert sind. Bilder die ich neu auf den Server lade sind somit einige Stunden lang nicht optimiert verfügbar, was allerdings verschmerzbar ist.
- Auf diese Art hat man ein Script welches automatisch und ohne Eingreifen alle Bilder optimiert.