WordPress ist einfach zu bedienen, WordPress ist praktisch zu handhaben, für WordPress gibt es jede Menge Themes, Plugins und noch viel mehr Snippets. Doch WordPress ist auch aufgebläht, nicht sehr schnell, mies optimiert und somit eben gerne mal ein Problem auf dem eigenen Server. Das liegt auch daran, dass WordPress unzählige Dynamiken kennt, viele Systeme (PHP, MySQL…) in Gang setzt und eben auch bei jedem Upload noch zusätzliche Bildgrößen generiert. Um Letzteres geht es heute.
Die Bildgrößen werden entweder von WordPress selbst oder den verwendeten Themes festgelegt. Wer also ein Bild im Admin hochlädt, sorgt fortan automatisch dafür, dass dieses, direkt nach dem Upload, von WordPress unbemerkt in verschiedenen Größen neu erstellt und gespeichert wird. Was bei kleinen Blogs mehr oder weniger egal zu sein scheint, wird bei großen Blogs schnell zum Speicherfresser. Was jedoch noch viel schlimmer ist – es frisst auch Ressourcen und somit Performance. Wer mehr als zehn Besucher auf einmal auf seinem Blog hat, sollte sich darüber im Klaren sein, dass so etwas zum Problem werden kann.
Heute zeige ich euch, wie ihr die Generierung von zusätzlichen Bildgrößen in WordPress deaktiviert und zwar vollständig und ein für alle mal. So verhindert ihr, dass beim Upload zusätzliche Bilder erstellt werden, die Platz und Performance verschwenden, die ihr selbst aber gar nicht benötigt. Auf gehts!
Ein Beispiel aus der Vergangenheit
Um euch zu Beginn aufzuzeigen, warum all das so ein großes Problem ist, möchte ich ein Beispiel aus meiner Blog-Vergangenheit nennen. Vor vielen Jahren führte ich einen Gaming Blog der sich großer Beliebtheit erfreute. Als ich damit anfing (es ist tatsächlich schon etwas her), arbeitete ich mich gerade in WordPress ein, kannte mich also noch nicht so gut aus wie heute, hatte noch nicht beruflich damit zu tun. Also schrieb ich Beiträge, lud Bilder dazu hoch, nutzte WordPress voll aus, mit all seinen Features. Ein tolles CMS, weil es so einfach war.
Das resultierte am Ende in über 11.000 Artikeln, die alle ein Titelbild und oft auch mehrere Screenshots zu den Videospielen beinhalteten. Rechnen wir mal nur mit dem Artikelbild. 11.000 Artikelbilder, zu denen jedesmal ein weiteres Thumbnail generiert wurde, eine Medium und Large Image, wie es bei WordPress heißt, und später, mit neueren Versionen von WordPress, dann auch noch Responsive Images in weiteren Größen.
Statt 11.000 Artikelbilder, war der Upload-Ordner am Ende also voll mit ungenutzten Bildgrößen, alle von WordPress selbst generiert. Als ich den Blog aufgab und die Dateien vom Server löschte, waren es statt ein paar hundert Megabyte (was nur die Bilder gebraucht hätten) mehrere Gigabyte (wegen den ganzen generierten Bildern). Total absurd. Mal davon abgesehen, dass durch verschiedene Themes auch immer wieder neue Bildgrößen hinzukamen. Aber damals hatte ich eben noch keine Ahnung.
WordPress Themes und das Problem mit der Performance
Das Beispiel zeigt deutlich, wie viel Platz ein einzelner Blog auf dem Server belegen kann. Aus wenigen Megabyte werden schnell viele Gigabyte und WordPress selbst erstellt, je nach Theme und Konfiguration, gerne mal sieben weitere Bilder. Ein Bild hochladen, bedeutet also sieben Bilder oder mehr zu speichern.
Während WordPress inzwischen tatsächlich sieben verschiedene Bildgrößen anlegt (Thumbnail, Medium, Large, Medium Large, 2x Medium Large, 2x Large, Scaled), erledigen Themes dies über »set_post_thumbnail_size()« und »add_image_size()«.
Hier sind keine Grenzen gesetzt und da die meisten Entwickler ihre Themes lieber mit Features vollstopfen, statt Zeit mit sinnvoller Optimierung zu verbringen, ist es mittlerweile auch keine Seltenheit, dass Überbleibsel der Entwicklung bestehen bleiben und am Ende Größen erstellt werden, die nicht einmal genutzt werden.
Für mich ist es die Performance, die mich am meisten stört. Bei jedem Upload generiert der Server weitere Bilder, was wiederum Performance frisst. Dies mag bei einem Blog und wenigen Besuchern alles mehr oder weniger egal sein, ich betreibe aber Blogs mit 100.000 Besuchern und mehr im Monat, wo es dann keine Seltenheit ist, dass ein paar tausend Besucher gleichzeitig auf die Website zugreifen. Solche Spitzen können sich da schon bemerkbar machen, wenn hinterher in die Logs und Analysen geschaut wird. Unerfreulich, vor allem aber unnötig, wenn die Bilder gar nicht genutzt werden.
Snippet für die functions.php
Wer die unnötigen Bildgrößen komplett deaktivieren möchte, kann folgendes Snippet einsetzen. Das schaltet, grob gesagt, jede zusätzliche Bildgröße außer Kraft. Hier ist es allerdings wichtig darauf zu achten, dass keine der Bildgrößen aktiv genutzt wird. Wenn ihr »Medium« oder »Large« bei der Gestaltung eurer Artikel effektiv verwendet, solltet ihr die entsprechenden Zeilen vorher natürlich aus dem Snippet entfernen.
Wie immer gilt außerdem: Erst testen, dann anwenden. Wer Hilfe braucht kann mich gerne kontaktieren. Lieber jemanden beauftragen der sich damit auskennt, als hinterher vor einem großen Problem zu stehen. Fragt mich also gerne um Rat, wenn ihr Probleme mit dem Speicherplatz oder den Bildgrößen feststellt.
Diverse Bildgrößen deaktivieren
function disable_image_sizes($sizes) { unset($sizes['thumbnail']); unset($sizes['medium']); unset($sizes['large']); unset($sizes['medium_large']); unset($sizes['1536x1536']); unset($sizes['2048x2048']); return $sizes; } add_action('image_sizes', 'disable_image_sizes'); add_filter('big_image_size_threshold', '__return_false');
Vom Theme erstellte Bildgrößen entfernen
Nun hatte ich weiter oben bereits erwähnt, dass es da noch Bildgrößen gibt, die vom Theme selbst erstellt werden. Mal sind diese notwendig, weil spezielle Vorschauen oder Slider im Theme sie nutzen, mal sind sie vollkommen überflüssig oder eben ein Überbleibsel der Entwicklung. Vor allem Letzteres sehe ich im Alltag mit WordPress Themes recht häufig. Da sind Snippets und Funktionen vorhanden, die so gar nicht mehr zum Einsatz kommen, offensichtlich also noch aus der Entwicklung stammen, hinterher aber nicht sauber herausgeschrieben worden sind. Ärgerlich, ist bei WordPress aber eben auch irgendwie Alltag, da viele Entwickler auf Features gucken, jedoch nur sehr wenige auf die Qualität ihrer Themes achten.
Um die Bildgrößen zu entfernen, die von einem Theme hinzugefügt worden sind, müsst ihr euch sicher sein, dass diese nicht aktiv genutzt werden. Entweder, weil sich gar nicht benötigt werden, vielleicht aber auch weil ihr die Funktion, für die die jeweilige Bildgröße erstellt wird, nicht verwendet. Kennt ihr den Namen, könnt ihr folgendes Snippet verwenden. Die erste Zeile entfernt Bilder via »set_post_thumbnail_size()« und die zweite ganz gezielt, über »add_image_size()«.
Auch hier wieder der Hinweis:
Wer sich nicht auskennt, sollte die Finger davon lassen. Gerne helfe ich euch dabei oder übernehme sogar eine grundlegende Optimierung eures Blogs. Einfach mal eine unverbindliche Mail schreiben.
Theme spezifische Bildgrößen deaktivieren
function disable_other_images() { remove_image_size('post-thumbnail'); remove_image_size('NAME_EINFÜGEN'); } add_action('init', 'disable_other_images');
Fazit zum deaktivieren der Bildgrößen
Am Ende noch einmal kurz eine Zusammenfassung bzw. ein Fazit zu dem Thema. Was mich persönlich an WordPress stört ist, dass es alles für jeden macht. Das CMS ist nicht clever, es fragt nicht, es macht einfach. Das sorgt dafür, dass WordPress für Anfänger besonders einfach zu bedienen ist, es sorgt aber eben auch dafür, dass es oft überladen, langsam und anfällig wird. Das merkt jeder, der sich etwas besser mit dem System auskennt. Anfänger merken es auch irgendwann, nur ist es dann eben oft zu spät.
Persönlich deaktiviere ich innerhalb von WordPress so ziemlich alles, was ich nicht unbedingt benötige. Die Bildgrößen sind hier ein schönes Beispiel. Warum sollte der Server an der Generierung arbeiten und warum sollte ich all die zusätzlichen Bilder speichern, die ich niemals benötige? Wer sich auskennt, verzichtet also auf den ganzen Ballast und deaktiviert die zusätzlichen Bildgrößen, die nicht benötigt werden.
Wer sich nicht auskennt, darf mich gerne um Rat und Hilfe fragen. Dann überlegen wir gemeinsam, wie wir eure WordPress-Installation optimieren und verbessern können.
Gerade die Performance ist nämlich auch für Google und Mobile Nutzer ein ziemlich großes Thema geworden.
4 Kommentare
Ursula
Hallo, ich steh leider vor demselben Problem.
Was macht man aber, wenn man schon viele Beiträge mit Bildern erstellt hat, und gar nicht mehr jedes Bild kontrollieren kann, welche Bildgröße da gerade aktiviert war ?
Deinen Code anwenden geht wohl nicht mehr 😅😄
wario
Du könntest ein Plugin nutzen wie zb. Media Cleaner “https://meowapps.com/media-cleaner/”
Da muss man aber natürlich sehr aufpassen wenn du Page Builder oder dergleichen nutzt.
Kobler Jean Michel
Es gibt aber noch eine die heisst “big” (scaled) size images.
Ich habe das Plugin Disable Media Size. Ist das gut? Dort kann ich es einfach ein- und ausschalten.
Ich setze gerade einen Shop auf und möchte von Anfang an alles richtig machen. Wie viel verlangen Sie für eine Beratung?
Viele Grüsse: Kobler Jean-Michel
Mario
Hallo,
wenn man alles von Anfang an richtig machen will, gibt es auch dieses Praktische Plugin: https://wordpress.org/plugins/imsanity/