Wenn WordPress langsam ist, hilft selten das nächste Performance-Plugin. Zuerst musst du wissen, wo die Zeit verloren geht: auf dem Server und in der Datenbank, im Theme- oder Plugin-Code, bei Bildern und Fonts oder in JavaScript und Drittanbietern. Seiten-Cache und CDN beschleunigen nur die Ebenen, die sie abdecken. Langsame dynamische Requests und unnötige Browserarbeit reparieren sie nicht.
- Welchen einen Nutzerweg machst du zur Messgrundlage? Alles Weitere hängt an dieser Wahl.
- Wem gehört jede Cache-Schicht, und wer darf sie invalidieren? Ohne Antwort baust du dir eine zweite Fehlerquelle.
- Welches Signal löst den Rollback aus? Das legst du fest, bevor du die erste Zeile änderst.
Labordaten und Felddaten beantworten unterschiedliche Fragen
PageSpeed Insights kombiniert zwei Arten von Evidenz. Die Lighthouse-Auswertung erzeugt Labordaten aus einem simulierten Aufruf unter kontrollierten Bedingungen; sie ist nützlich, um Wasserfall, LCP-Ressource und blockierende Arbeit zu untersuchen. Liegen für die URL oder den Ursprung genügend Daten vor, zeigt PageSpeed Insights zusätzlich reale Nutzungsdaten aus dem Chrome User Experience Report.
Die Core-Web-Vitals-Bewertung beruht auf diesen Felddaten. LCP und CLS lassen sich zwar auch im Labor messen, ein einzelner Lauf bildet aber weder die Verteilung realer Besuche noch alle Interaktionen einer Sitzung ab, und INP liefert ein reiner Ladelauf gar nicht. Fehlende CrUX-Daten bedeuten deshalb nicht, dass eine Seite gut oder schlecht ist, sondern nur, dass zu wenig auswertbare Nutzung vorliegt. Wer den Score selbst zum Ziel erklärt, optimiert am Ende das Werkzeug und nicht den Nutzerweg.
Unsere enge Beleggrenze: PageSpeed Insights maß für duna.digital am 15. Juli 2026 in den Modi Mobil und Desktop jeweils vier Werte von 100. Das war ein datierter Lighthouse-Labortest. duna.digital läuft mit Astro und nicht mit WordPress. Der Befund ist weder ein WordPress-Referenzfall noch eine dauerhafte Garantie und belegt nicht, dass Core Web Vitals bestanden wurden. Die Methode beschreiben wir im Artikel Lighthouse 100: unser Weg zu viermal 100.
Lege zuerst einen repräsentativen Nutzerweg und eine Baseline fest
„WordPress ist langsam“ ist keine Diagnose. Eine redaktionelle Landingpage, eine Suche, ein Formular und ein eingeloggter Bereich lösen völlig unterschiedliche Arbeit aus. Wähle einen geschäftlich relevanten Ablauf, der das Problem zeigt, und dokumentiere URL, Seitentyp, Nutzerstatus, Browserkategorie und Cache-Zustand. Nimm mindestens einen zweiten Seitentyp dazu, damit eine lokale Reparatur nicht als systemweite Verbesserung durchgeht.
Erfasse für die Baseline nicht nur einen Gesamtscore, sondern TTFB, die LCP-Aufteilung, CLS, Requests, übertragene Daten und Hauptthread-Arbeit, und am Ursprung PHP-Zeit, Datenbankabfragen, externe Aufrufe und Cache-Status. Miss kalt und warm, anonym und dynamisch. Wiederhole die Messung: einzelne Läufe schwanken durch Netz, Serverlast und Gerät, und ein stabiler Median ist belastbarer als der beste Screenshot. Für Analyse und Umsetzung ist unsere Performance-Optimierung der kommerzielle Einstieg; dieser Artikel erklärt die Diagnose, nicht ein garantiertes Ergebnis.
TTFB, PHP und Server: der frühe Antwortpfad
Time to First Byte misst die Zeit bis zum ersten Byte der Dokumentantwort und enthält Weiterleitungen, Verbindung, Netz und Serverantwort. Das ist ein Frühsignal, keine vollständige Ladezeit: Eine schnelle HTML-Antwort kann später von einer spät entdeckten LCP-Ressource ausgebremst werden. Trenne deshalb zuerst Edge und Ursprung.
WordPress empfiehlt einen modernen PHP- und Datenbankstand, aber ein Upgrade ist kein blinder Schalter. Inventarisiere Core, Theme, Plugins und Erweiterungen, prüfe die Kompatibilität produktionsnah und vergleiche denselben Ablauf. Kontrolliere, ob ein Opcode-Cache greift und ob CPU, Speicher, PHP-Worker oder Datenbankverbindungen im langsamen Request zum Engpass werden. Mehr Ressourcen federn einen Engpass ab, beseitigen ihn aber nicht: Wenn ein Plugin bei jedem Aufruf dieselbe unnötige Abfragekette ausführt, verschiebt ein größerer Server nur den Punkt, an dem es auffällt.
Datenbank und automatisch geladene Optionen
Bei der Datenbank zählen Abfrageform, Häufigkeit, Ergebnisgröße und Aufrufer. Suche nach wiederholten oder langen Abfragen, unnötig geladenen Beziehungen und Erweiterungen, die im kritischen Pfad nachladen. Ein Query-Log sollte nicht nur SQL zeigen, sondern den Plugin-, Theme- oder Core-Kontext, der die Abfrage ausgelöst hat.
Automatisch geladene Optionen lädt WordPress bei jedem Seitenaufruf mit; zu viele oder große Werte erhöhen Arbeit und Speicher, und Site Health hat dafür einen eigenen Test. Lösche Einträge trotzdem nie allein wegen Name oder Größe, sondern kläre vorher Eigentümer, aktive Verwendung und Wiederherstellungsweg. Auch eine Datenbankbereinigung braucht Vorher-Nachher-Evidenz: Alte Revisionen zu entfernen spart Speicher, muss aber nicht die langsame Abfrage treffen.
Theme, Page-Builder und Plugins nach Route statt nach Anzahl bewerten
Die Zahl aktiver Plugins ist kein Performance-Messwert. Entscheidend ist, welche Komponenten auf der betroffenen Route welche Hooks, Abfragen, Dateien, DOM-Strukturen und Drittanbieter auslösen. Ein großes Plugin kann auf einer Seite fast nichts tun, während ein kleiner Zusatz in jedem Request eine externe API abfragt.
Erstelle pro Route eine Verursacherübersicht und ordne Serverzeit, Abfragen, Skripte und externe Hosts den verantwortlichen Komponenten zu. Teste Deaktivieren oder Ersetzen nur in einer sicheren Kopie und mit fachlicher Prüfliste, die auch Editor, Formulare, geplante Aufgaben und Tracking abdeckt: Ein schnellerer Screenshot bei kaputter Funktion ist eine Regression. Entsteht das Problem aus Architektur und redaktionellen Anforderungen, bewerte einen anderen Aufbau getrennt von der akuten Diagnose; unser Überblick zu Headless CMS hilft dabei.
Seiten-Cache, Objekt-Cache und CDN haben unterschiedliche Grenzen
Ein Seiten-Cache speichert eine fertige HTML-Antwort und umgeht bei einem gültigen Treffer einen großen Teil der PHP- und Datenbankarbeit. Das passt zu anonymen, selten veränderten Seiten. Hängt die Antwort von Nutzer, Sprache, Rolle oder Consent ab, müssen Cache-Key, Varianten und Ausschlüsse diese Grenzen abbilden.
Ein persistenter Objekt-Cache spart Datenbankzugriffe, ersetzt aber weder Datenmodell noch korrekte Abfragen; seine Einträge müssen regenerierbar sein. Ein CDN verkürzt den Weg für statische Dateien und kann cachefähige Antworten bedienen, beschleunigt aber keinen langsamen, ungecachten Origin-Request. Prüfe deshalb getrennt: Trifft der Request den Edge-Cache, welche Varianten existieren, wann wird invalidiert, und was passiert bei einem Bypass?
Kein Cache-Stapel ohne Eigentümer: Browser-Cache, Plugin-Cache, Webserver, Objekt-Cache und CDN können zusammenarbeiten. Ohne dokumentierte Reihenfolge und Invalidierung zeigt der Test aber leicht eine alte Seite, während Redaktion oder Nutzer längst andere Daten erwarten. Zwei gestapelte Cache-Plugins machen genau diese Zuständigkeit unauflösbar, ohne den Ursprung schneller zu machen.
Bilder und Fonts: früh auffindbar statt pauschal optimiert
Ist ein Bild das LCP-Element, zerlege die Zeit in TTFB, Entdeckungsverzögerung, Übertragung und Renderverzögerung. Ein kleineres Bild hilft wenig, wenn der Browser seine URL erst nach JavaScript oder spätem CSS entdeckt. Ein wahrscheinliches LCP-Bild gehört deshalb nicht ins Lazy Loading, sondern ins ursprüngliche HTML. WordPress erzeugt für geeignete Uploads mehrere Bildgrößen und liefert sie über srcset und sizes aus, aber das Theme muss passende Größen melden. Breite und Höhe oder ein korrektes Seitenverhältnis reservieren Platz und verhindern Layout-Verschiebungen. „Alle Bilder lazy“ ist dagegen kein Konzept.
Webfonts konkurrieren im kritischen Ladepfad. Reduziere auf tatsächlich verwendete Schnitte und lade früh nur, was der erste sichtbare Inhalt braucht. font-display ist ein sichtbarer Trade-off: Eine Fallback-Schrift zeigt Text früher, verschiebt aber Layout, wenn ihre Metriken stark abweichen. Passe Fallback-Metriken an und teste echte Überschriften, Navigation und Formulare in beiden Sprachen. Selbsthosting ist nicht automatisch schneller, und jedes Preload verbraucht ein knappes Prioritätsbudget.
JavaScript, Consent und Drittanbieter gemeinsam prüfen
Drittanbieter verursachen zusätzliche Verbindungen, Requests, JavaScript-Arbeit und iFrames und können außerhalb deiner Kontrolle ausfallen: Analytics, Tag Manager, A/B-Tests, Chats, Videos, Karten, Social Widgets. Gib im Netzwerk-Wasserfall jeder Ressource einen fachlichen Zweck und einen Eigentümer und prüfe, ob sie auf jeder Route nötig ist. Entfernen schlägt Optimieren, wenn eine Integration keinen belastbaren Nutzen mehr hat. Beim CSS gilt das Gegenteil: Wer ungenutzte Regeln aggressiv entfernt, verliert schnell dynamische Zustände, Editor-Inhalte und seltene Komponenten.
Für notwendige Skripte kommen bedingtes Laden, späte Initialisierung sowie async oder defer infrage. Eine pauschale Verzögerung bis zur ersten Interaktion entlastet zwar den Labortest, beschädigt aber leicht Navigation, Formularvalidierung, Consent oder Analytics-Semantik. INP bewertet ohnehin Interaktionen während des Besuchs, also teste Menü, Suche, Formulare und Filter. Consent bleibt dabei eine rechtliche Grenze: Optionale Skripte dürfen nicht vor der Zustimmung laden.
Vom Symptom zum ersten Hebel
| Symptom | Stützende Evidenz | Erster Hebel | Was die Ursache nur verstecken würde | Notwendiger Regressionstest |
|---|---|---|---|---|
| Hohe TTFB nur ohne Cache-Treffer | Das Origin-Profil zeigt Wartezeiten in PHP, Datenbank oder externen Diensten | Größten belegten Origin-Anteil reduzieren | Nur die Demo-URL am CDN vorwärmen | Kalter und warmer Abruf mehrerer repräsentativer Routen |
| Viele wiederholte Abfragen | Profiler ordnet Query-Muster einem Plugin, Theme oder Template zu | Abfrageform, Datenmenge oder Aufrufhäufigkeit korrigieren | Datenbankbereinigung ohne Bezug zum Request | Abfragezahl, Antwort, Suche, Redaktion und Hintergrundläufe |
| LCP-Ressource startet spät | Wasserfall zeigt späte Entdeckung oder falsche Priorität | Ressource im HTML auffindbar machen und korrekt priorisieren | Nur Bildqualität stark reduzieren | LCP-Element, Darstellungsqualität und mobile Varianten |
| Hohe Browserarbeit | Trace zeigt lange Tasks aus Theme, Builder oder Drittanbieter | Nicht benötigte Arbeit entfernen oder gezielt aufteilen | Alles bis zur ersten Interaktion verschieben | INP-relevante Bedienwege, Consent, Formulare und Analytics |
| Layout springt nach dem Start | Layout-Shift-Spuren zeigen Bild, Font, Banner oder Embed | Platz reservieren und den konkreten Auslöser stabilisieren | Animation oder Overlay über die Bewegung legen | Mobile und Desktop, kalter Cache, Consent-Zustände und lange Sitzung |
| Nur dynamische Pfade sind langsam | Anonyme Seiten erzielen Cache-Treffer, Suche, Login oder Formular dagegen nicht | Den dynamischen Request profilieren und nicht kritische Arbeit entkoppeln | Globale CDN-Erweiterung ohne Wirkung auf den Pfad | Anonyme und berechtigte Rollen, Fehlerfälle und Cache-Ausschlüsse |
Sicher ausrollen: Budget, Monitoring, Eigentümer und Rollback
Eine Performance-Änderung ist ein Release. Lege vorab fest, welche Route und welche Metrik besser werden soll, welche Funktionen unverändert bleiben müssen, wer den Ausrollvorgang verantwortet und welches Signal den Rollback auslöst. Ändere dann möglichst nur einen zusammenhängenden Ursachenblock pro Schritt, sonst ist die Wirkung am Ende niemandem zuzuordnen.
Ein Performance-Budget braucht keine universelle Zahl, sondern projektspezifische Grenzwerte pro wichtigem Seitentyp. Core Web Vitals beobachtest du dagegen als Felddaten über Zeit; beim Release lassen sie sich nicht bestätigen. Prüfe nach dem Ausrollen zusätzlich Formulare, Suche, Consent, Analytics und Barrierefreiheit.
Wird daraus eine tiefgreifende Änderung, brauchen URL-, Inhalts- und Tracking-Grenzen eigene Planung; unsere Website-Relaunch-Checkliste behandelt diese Risiken. Für Entwicklung, Wartung und klare WordPress-Verantwortung ist unsere WordPress-Agentur-Seite der passende nächste Kontext.
Häufige Fragen zur WordPress-Performance
Macht ein Cache-Plugin WordPress automatisch schnell?
Nein. Ein Seiten-Cache kann cachefähige HTML-Antworten beschleunigen, und ein persistenter Objekt-Cache kann wiederholte Datenzugriffe vermeiden. Beides repariert aber weder langsame dynamische Requests noch unnötige JavaScript-Arbeit. Vor der Einführung müssen die langsame Route, die Cache-Grenzen und die Invalidierung klar sein.
Warum ist der PageSpeed-Score gut, obwohl sich die Website langsam anfühlt?
Ein Lighthouse-Labortest bildet einen kontrollierten Seitenaufruf ab. Reale Nutzer haben andere Geräte, Netze, Cache-Zustände und Interaktionen. Prüfe deshalb die Labordiagnose zusammen mit CrUX- oder eigenen Felddaten und mit den tatsächlichen Schritten im Nutzerweg.
Sollte ich für mehr WordPress-Performance viele Plugins löschen?
Nicht nach Anzahl. Ein einzelnes Plugin kann auf einer wichtigen Route viel Arbeit erzeugen, während mehrere kleine Plugins dort kaum beitragen. Profiliere den betroffenen Ablauf, prüfe Hooks, Abfragen, externe Requests und Browser-Payload und entferne nur Funktionen, deren fachliche Folgen geklärt sind.
Du kannst den Projektkontext auch direkt über unsere Kontaktseite senden.
Offizielle Primärquellen, abgerufen am 26. Juli 2026.
[1] Google for Developers: About PageSpeed Insights [2] Google Search Central: Understanding Core Web Vitals and Google search results [3] web.dev: Why lab and field data can be different [4] web.dev: Time to First Byte [5] web.dev: Optimize Largest Contentful Paint [6] web.dev: Interaction to Next Paint [7] web.dev: Cumulative Layout Shift [8] web.dev: Best practices for fonts [9] web.dev: Third-party JavaScript performance [10] WordPress.org: Requirements [11] WordPress Developer Resources: Optimization [12] WordPress Developer Resources: Cache [13] WordPress Developer Resources: Responsive Images [14] WordPress Core Performance: Profiling vs benchmarking [15] WordPress Core Performance: Best practices for performance measurement [16] WordPress Developer Resources: WP Site Health autoloaded options test