Stabile Ladezeiten für die Shops von Display Sales

Kunde
Display Sales
Zeitraum
2 Monate
Services
Speedoptimierung, Web-Entwicklung
Produktübersicht im Display Sales Onlineshop

Projektübersicht

Im Rahmen eines umfassenden Performanceoptimierungsprojekts für Display Sales wurde nach einer detaillierten Analyse festgestellt, dass externe Optimierungsansätze wie CDN Nutzung und cloudbasierte Tools keine dauerhaft zuverlässigen Ergebnisse hinsichtlich der Ladezeit und Stabilität brachten. Außerdem: Nach mehreren fehlgeschlagenen Versuchen, die Leistung der älteren Serverinstanz zu verbessern, erstellten wir einen Plan für einen Serverumzug inklusive der Entfernung der bisherigen CDN basierten Optimierungsplugins zugunsten lokaler, gezielt auf die Shop Umgebung abgestimmter Lösungen und Skripte.
Das Endergebnis ist nachhaltig stabile Ladezeiten. Der Kunde kann das dabei in einem eigens für ihn entwickelten Performance Score Dashboard mitverfolgen.
Desktopansicht des Display Sales Onlineshops

Kurz zusammengefasst.

  • Server: Umzug zu Hetzner mit aktueller PHP Version und mehr Leistung
  • Caching: WP Rocket statt NitroPack, mit automatischen Ausschlüssen und Optimierung des Codes
  • Datenbank: wp_options bereinigt, fehlende Indizes ergänzt, Tabellen von WooCommerce aufgeräumt
  • JavaScript: Skripte, die nicht sofort gebraucht werden, starten erst bei der ersten Interaktion
  • Externe Dienste: Cookie Banner und Captcha durch lokale Lösungen ersetzt
  • Ballast: überflüssige Funktionen von WordPress und WooCommerce abgeschaltet, etwa Emojis, Heartbeat und Widgets
  • Bilder: Komprimierung und WebP über EWWW, Lazy Loading über WP Rocket
  • Videos: YouTube lädt erst nach einem Klick, gut für Ladezeit und Datenschutz
  • Theme: alte Codefragmente entfernt, Slider auf der Startseite entschlackt
  • Monitoring: eigenes Dashboard für Ladezeiten und Core Web Vitals

Ausgangslage und Analyse

Am Anfang stand eine genaue Analyse der beiden Shops von Display Sales. Im Einsatz waren bereits ein Content Delivery Network (CDN) und NitroPack, ein Optimierungsplugin, das in der Cloud arbeitet. Trotzdem schwankten die Ladezeiten stark.

Solche Komplettlösungen erzielten in Tests zwar teils gute PageSpeed Werte. Im Live Betrieb arbeiteten sie aber unzuverlässig und verursachten Darstellungsfehler und Konflikte. Dazu kam als Server ein sehr knapp bemessenes Droplet bei DigitalOcean, das die Leistung zusätzlich begrenzte.

Unser Plan für die Performance Optimierung sah deshalb zwei Dinge vor: den Umzug auf einen aktuellen Hostingtarif bei Hetzner und den Verzicht auf die anfälligen Optimierungen aus der Cloud. Stattdessen setzten wir auf lokale Maßnahmen und gezielte Änderungen am Code. Die größten Bremsen waren neben dem Server viele Skripte und Plugins von Drittanbietern, die das Rendering blockierten und die Core Web Vitals verschlechterten.

Serverumzug und lokales Caching

Der erste große Schritt war der Serverumzug. Beide WooCommerce Shops laufen jetzt auf einem stärkeren Server mit aktueller PHP Version. Allein das senkte die Time to First Byte, beschleunigte das Backend und hielt die Performance auch unter höherer Last stabil.

Parallel haben wir NitroPack durch WP Rocket ersetzt. Den Ausschlag gaben die regelmäßigen Updates zur Kompatibilität: WP Rocket lädt jede Woche aktuelle Ausschlusslisten für CSS und JavaScript nach und umgeht so bekannte Konflikte automatisch. Dadurch blieb mehr Zeit für Optimierungen, die nur diese Shops betreffen.

In WP Rocket haben wir Seiten und Browser Cache eingerichtet und CSS und JavaScript minifiziert und zusammengefasst, soweit das ohne Fehler möglich war. Kritische Shop Skripte und Ressourcen von Drittanbietern nimmt das Regelwerk von WP Rocket automatisch von bestimmten Optimierungen aus. Schon der neue Server und das lokale Caching sorgten zusammen für deutlich gleichmäßigere Ladezeiten als die frühere Lösung mit CDN.

Auf dem Hetzner Server haben wir außerdem die Konfiguration angepasst, etwa den OPcache für mehr PHP Leistung. Den WP-Cron ersetzt ein echter Cronjob auf dem Server.

Lokale Lösungen statt externer Dienste

Externe Dienste haben wir, wo möglich, durch schlanke lokale Lösungen ersetzt. Den Cookie Banner eines fremden Anbieters, der per externem Skript geladen wurde, übernimmt jetzt unser eigenes Plugin WS Cookie Consent. Es verwaltet alle Einwilligungen lokal und ist an das Design von Display Sales angepasst. Auch das Captcha arbeitet jetzt lokal, mit einem schlankeren Plugin.

Jede externe Einbindung weniger bedeutet weniger HTTP Anfragen und kürzere Ladezeiten, was den Core Web Vitals zugutekommt. Zudem behalten wir die volle Kontrolle über Funktion und Design dieser Elemente.

Dashboard für Ladezeiten und Core Web Vitals

Damit Display Sales die Wirkung der Maßnahmen jederzeit nachvollziehen kann, haben wir ein eigenes Dashboard entwickelt. Es bündelt Messwerte aus Google PageSpeed Insights und GTmetrix und lässt sich über DataForSEO erweitern. Ladezeiten, Performance Werte und Core Web Vitals beider Shops sind dort auf einen Blick sichtbar, jeweils im Vergleich zum Ausgangszustand.

Das Dashboard aktualisiert sich regelmäßig. So fallen Verschlechterungen früh auf, und die erreichten Ladezeiten bleiben auch nach künftigen Änderungen im Blick.

Altlasten im Theme entfernt

Parallel haben wir den Code der Shops aufgeräumt. Im Child Theme hatten sich über die Jahre viele Codefragmente und Workarounds angesammelt, von denen einige nicht mehr nötig oder sogar inkompatibel waren. Diese Altlasten haben wir geprüft und auskommentiert, damit der Code schlanker und leichter wartbar wird.

Besonders genau haben wir uns den Slider auf der Startseite angesehen, eine häufige Ursache für lange Ladezeiten. Unnötige Effekte und Skripte sind abgeschaltet, der Slider sieht auch ohne JavaScript beim ersten Laden gut aus, und seine Bilder laden verzögert. So blockieren weniger Elemente das Rendering, und der Browser baut die Seite schneller auf.

JavaScript erst bei Bedarf laden

Der größte Hebel war die Last durch JavaScript. Große Shops binden oft Dutzende externe Skripte ein, von Tracking über Chats und Trusted Shops bis zu Zahlungsanbietern. Laut SpeedCurve lädt eine durchschnittliche Website mehr als 35 Skripte von Drittanbietern. Die zehn beliebtesten davon blockieren den Seitenaufbau im Mittel 1,4 Sekunden. Auch bei Display Sales blockierten viele externe Skripte den Hauptthread und verzögerten den Aufbau der Seiten.

Unsere Lösung: JavaScript läuft erst, wenn es gebraucht wird. Mit der verzögerten Ausführung von JavaScript in WP Rocket warten alle Skripte, die nicht sofort nötig sind, bis Besucher scrollen oder klicken. Das funktioniert wie Lazy Loading, nur für Skripte statt Bilder. Beim ersten Aufruf lädt der Browser nur das Nötigste, schwere Dateien wie Tracking Pixel, Widgets oder Chat folgen später.

Die Wirkung war deutlich. Die Arbeit im Hauptthread und die Ausführungszeit von JavaScript gingen stark zurück, Total Blocking Time (TBT) und First Contentful Paint (FCP) verbesserten sich. Viele Hinweise aus PageSpeed Insights und GTmetrix, etwa „Remove unused JavaScript“ oder „Reduce JavaScript execution time“, waren damit erledigt.

Wichtig war das Feintuning. Kritische Shop Funktionen und Inline Skripte des Themes haben wir von der Verzögerung ausgenommen, damit nichts ausfällt. Dabei half die vorkonfigurierte Ausnahmeliste von WP Rocket für jQuery und zentrale Elemente von WooCommerce. Den Großteil der Skripte von Drittanbietern konnten wir trotzdem nach hinten verschieben, und die Seiten fühlen sich für Besucher spürbar schneller an.

Datenbank und Backend beschleunigt

Auch Datenbank und WordPress Backend haben wir beschleunigt. Ein bekannter Flaschenhals ist die Tabelle wp_options, in der viele Einstellungen und Cache Daten liegen. Dort hatten sich viele Einträge mit Autoload angesammelt, die bei jedem Seitenaufruf mitgeladen werden. Hinzu kommt, dass die Tabelle standardmäßig keinen Index auf dem Feld für Autoload hat. Laut Dokumentation von WooCommerce kann das Abfragen stark verlangsamen.

Wir haben die Tabelle deshalb so weit wie möglich bereinigt und für kritische Abfragen fehlende Indizes ergänzt. Außerdem haben wir die Tabellen von WooCommerce geprüft und verwaiste Sessions sowie abgelaufene Transients gelöscht. Auf häufig abgefragte Spalten haben wir zusätzliche Indizes gesetzt, etwa in wp_postmeta und den Bestelltabellen. Nicht mehr genutzte Tabellen sind ebenfalls entfernt.

Das Ergebnis ist ein spürbar schnelleres Backend. Auch im Frontend wird die erste Anfrage schneller, die bei manchen Elementen von WooCommerce ohne Cache auf die Datenbank zugreift.

Auf persistentes Object Caching haben wir vorerst verzichtet. Bei den vielen eingesetzten Plugins können wir die Kompatibilität noch nicht sicher zusagen. Wir testen das schrittweise auf einer Staging Kopie mit Redis, SQLite und APCu, denn Object Caching bringt nicht in jeder Umgebung einen Vorteil.

Bilder und Videos optimiert

Bei den Medien haben wir mehrere Stellschrauben genutzt. Das Plugin EWWW Image Optimizer komprimiert alle Bilder verlustfrei und erzeugt WebP Versionen, die jeder Browser mit WebP Unterstützung automatisch erhält. Für Lazy Loading nutzen wir dagegen WP Rocket, das in unseren Tests etwas schneller war und besser zum Gesamtkonzept passt. Bilder außerhalb des sichtbaren Bereichs laden erst beim Scrollen, was den Largest Contentful Paint verbessert.

Außerdem haben wir geprüft, welchen Bildern WordPress automatisch fetchpriority="high" gibt. PageSpeed Insights hielt ein anderes Bild für das wichtigste Element als WordPress, deshalb haben wir die Priorisierung angepasst.

YouTube Videos in Produktbeschreibungen laden erst nach einem Klick auf ein lokal gespeichertes Vorschaubild. Erst dann nimmt der Browser Kontakt zu den Servern von YouTube auf, was auch dem Datenschutz hilft. So laden die Seiten trotz vieler Produktbilder schnell.

Unnötige Funktionen abgeschaltet

Mehr als erwartet brachte das Abschalten von Ballast. WordPress und WooCommerce bringen Funktionen mit, die Leistung kosten, aber nicht gebraucht werden. Im Dashboard haben wir Funktionen von WooCommerce Admin wie Status Widget, Empfehlungen aus dem Marktplatz und Benachrichtigungen deaktiviert. Das Backend ist dadurch übersichtlicher und schneller.

In WordPress selbst sind das Laden der Emojis und die Embeds abgeschaltet, und die Heartbeat API meldet sich im Backend seltener. Jede abgeschaltete Funktion bedeutet weniger Code und weniger Anfragen, und damit kürzere Ladezeiten.

Fazit

Die konsequente Umstellung von externen, cloudbasierten Lösungen auf lokale Optimierungsmaßnahmen hat die Performance und Stabilität der Shop-Seiten von Display Sales nachhaltig verbessert; insbesondere die serverseitige Anpassung, das Entfernen ressourcenhungriger Drittanbieter-Tools sowie die gezielte Skriptkontrolle führen nun zu schneller ladenden, zuverlässigen und effizient skalierbaren Webshops, die beständig hohe Nutzerzufriedenheit und messbar bessere Ladezeiten bieten. Hierbei war intensive eigenhändige Programmierung und rigoroses Testen notwendig, was im starken Kontrast dazu steht, was oftmals als simples Plugininstallieren der bekannten Speedoptimierungsplugins abgetan wird.
Mobile Ansicht des Display Sales Onlineshops

Let’s talk!

Winning Solutions hilft Unternehmen, beeindruckende und strategisch durchdachte Webseiten zu schaffen, die Ihre Kunden begeistern. Unsere Experten arbeiten eng mit Ihnen zusammen, um sicherzustellen, dass jedes Detail perfekt auf Ihre Ziele abgestimmt ist.

    Mit absenden dieses Formulars akzeptieren Sie unsere Datenschutzerklärung.