Sobald Sie die Schwachstellen Ihrer Website identifiziert haben, geht es an die Optimierung. Die folgenden Maßnahmen sind nach Wirkungsbereich gegliedert, vom Server über die Medien bis hin zum Code.
7.1 Server und Hosting
Die Grundlage jeder schnellen Website ist ein schneller Server. Keine Frontend-Optimierung kann einen langsamen Server kompensieren, weshalb dieser Bereich immer zuerst betrachtet werden sollte.
CMS, Shop-System und PHP aktuell halten: Verwenden Sie stets die neueste stabile PHP-Version. Jede neue PHP-Hauptversion bringt messbare Performance-Verbesserungen mit sich, die sich ohne jede Änderung am Code Ihrer Website bemerkbar machen. Gleiches gilt für Ihr CMS oder Shop-System: WordPress, Joomla, Shopware und andere Content-Management- oder Shop-Systeme optimieren mit jedem Major-Update ihre interne Verarbeitung.
Server-seitiges Caching einsetzen: Caching auf dem Server reduziert die Arbeit, die bei jedem Seitenaufruf anfällt. Der Opcode-Cache (OPcache) speichert vorkompilierten PHP-Code und ist in den meisten Hosting-Umgebungen bereits aktiv. Ein Object-Cache wie Redis oder Memcached hält häufig benötigte Datenbankabfragen im Arbeitsspeicher bereit, sodass sie nicht bei jedem Seitenaufruf erneut an die Datenbank gestellt werden müssen. Am wirksamsten ist ein Full-Page-Cache, der die fertig gerenderte HTML-Seite zwischenspeichert und bei wiederholten Aufrufen direkt ausliefert, ohne dass PHP oder die Datenbank überhaupt angesprochen werden. Lösungen hierfür sind etwa nginx FastCGI Cache oder CMS-spezifische Caching-Plugins.
Komprimierung aktivieren: Die Übertragung von Text-basierten Dateien (HTML, CSS und JavaScript) lässt sich durch Komprimierung erheblich beschleunigen. Das älteste und am weitesten verbreitete Verfahren ist gzip, das die Dateigröße um etwa 70 Prozent reduziert. Moderner und effizienter ist Brotli, das 15 bis 25 Prozent bessere Komprimierungsraten als gzip erzielt und von allen aktuellen Browsern unterstützt wird. Am Horizont zeichnet sich mit Zstandard (zstd) ein weiteres Verfahren ab, das vergleichbare Komprimierungsraten wie Brotli bei deutlich höherer Geschwindigkeit bietet. Die Browser-Unterstützung wächst stetig.
HTTP/2 und HTTP/3: HTTP/2 sollte mittlerweile das Minimum sein. Es erlaubt dank Multiplexing, mehrere Anfragen gleichzeitig über eine einzige Verbindung abzuwickeln, und reduziert die Datenmenge durch Header-Komprimierung. HTTP/3, das auf dem QUIC-Protokoll basiert, geht noch einen Schritt weiter: Es ermöglicht einen schnelleren Verbindungsaufbau (0-RTT), vermeidet das sogenannte Head-of-Line-Blocking, bei dem in HTTP/2 ein einzelner Paketverlust alle parallelen Anfragen verzögern kann, und unterstützt Connection Migration, der nahtlose Wechsel zwischen WLAN und Mobilfunk, ohne dass die Verbindung neu aufgebaut werden muss. HTTP/3 wird bereits von etwa einem Drittel aller Websites unterstützt und ist besonders für mobile Nutzer auf instabilen Netzwerkverbindungen ein echter Gewinn.
103 Early Hints einsetzen: Eine vergleichsweise neue, aber wirkungsvolle Technik ist der HTTP-Statuscode 103 (Early Hints). Er ermöglicht es dem Server, dem Browser kritische Ressourcen wie Stylesheets, Schriftarten oder JavaScript-Dateien anzukündigen, noch bevor die eigentliche HTML-Antwort fertig generiert ist. Der Browser kann so bereits mit dem Download dieser Ressource beginnen, während der Server noch mit der Verarbeitung beschäftigt ist. 103 Early Hints ersetzen zunehmend das ältere HTTP/2 Server Push, das sich in der Praxis als schwierig zu handhaben erwiesen hat.
7.2 Bilder optimieren
Bilder sind in den meisten Fällen der größte Hebel für eine bessere Ladezeit. Sie machen durchschnittlich 50 bis 70 Prozent der gesamten Seitengröße aus, und entsprechend groß ist das Einsparpotenzial.
Der wichtigste Schritt ist die Verwendung moderner Bildformate. AVIF, basierend auf dem AV1-Video-Codec, erzeugt bei gleicher visueller Qualität 40 bis 60 Prozent kleinere Dateien als JPEG und wird inzwischen von über 85 Prozent aller Browser unterstützt (Chrome, Firefox, Safari ab Version 16 und Edge). WebP, das ältere moderne Format, bietet immer noch etwa 30 Prozent Einsparung gegenüber JPEG bei einer Browser-Unterstützung von über 97 Prozent. Die empfohlene Strategie ist, AVIF als primäres Format auszuliefern, WebP als Fallback für ältere Browser anzubieten und JPEG als letzte Rückfallebene beizubehalten. Mit dem HTML-Element <picture> lässt sich diese Kaskade elegant umsetzen:
<picture>
<source srcset="bild.avif" type="image/avif">
<source srcset="bild.webp" type="image/webp">
<img src="bild.jpg" alt="Beschreibung" width="800" height="600" loading="lazy">
</picture>
Neben dem Format gibt es weitere wichtige Optimierungen. Für Bilder, diesich außerhalb des sichtbaren Bereichs befinden, sollten Sie das Attribut loading="lazy" verwenden. Der Browser lädt diese Bilder dann erst, wenn der Nutzer in ihre Nähe scrollt, und spart so wertvolle Bandbreite beim initialen Seitenaufbau. Für das Hauptbild der Seite, das sogenannte Hero-Bild, das in der Regel das LCP-Element ist, gilt allerdings das Gegenteil: Diese Bild sollte keinesfalls lazy geladen werden, sondern mithilfe von fetchpriority="high" und einem Preload-Link (<link rel="preload">) so früh wie möglich geladen werden.
Geben Sie außerdem für alle Bilder immer die Attribute width und height an. Ohne diese Angaben weiß der Browser nicht, wie viel Platz ein Bild einnehmen wird, bevor es geladen ist, und reserviert keinen Platz im Layout. Sobald das Bild dann erscheint, verschiebt sich der gesamte Seiteninhalt nach unten. Genau die Art von Layout-Sprung, die zu einem schlechten CLS-Wert führt.
Für Websites, die Bilder in vielen verschiedenen Größen ausliefern müssen, bieten die Attribute srcset und sizes eine elegante Lösung. Der Browser wählt damit automatisch die passende Bildgröße für die jeweilige Bildschirmauflösung und das Ausgabeformat, sodass auf einem Smartphone nicht dasselbe 200-Pixel-Bild geladen wird wie auf einem 4K-Monitor.
7.3 JavaScript und CSS optimieren
Nach den Bildern sind JavaScript und CSS die zweitgrößten Faktoren für die Ladezeit, und sie beeinflussen vor allem die Reaktionsfähigkeit (INP) und die Zeit bis zum ersten sichtbaren Inhalt (FCP).
Jedes Plugin und jedes externe Skript, das Sie in Ihre Website einbinden, erhöht die Ladezeit. Analytics-Tools, Chat-Widgets, Social-Media-Buttons, Cookie-Banner, A/B-Testing-Skripte, sie alle laden eigene JavaScript-Dateien und oft zusätzliche Ressourcen nach. Prüfen Sie deshalb regelmäßig, ob jedes eingebundene Plugin noch benötigt wird, ob es eine leichtgewichtigere Alternative gibt und ob das Skript wirklich sofort beim Seitenaufruf geladen werden muss oder ob ein verzögertes Laden mit den Attributen defer oder async ausreicht.
Auf der Code-Ebene gibt es mehrere Techniken, die die ausgelieferte Datenmenge reduzieren. Die Minifizierung entfernt überflüssige Zeichen wie Leerzeichen, Zeilenumbrüche und Kommentare aus JavaScript- und CSS-Dateien. In Kombination mit der bereits genannten Komprimierung (Brotli/gzip) können so bis zu 70 Prozent der Dateigröße eingespart werden. Code Splitting teilt große JavaScript-Bundles in kleinere Pakete auf, die nur bei Bedarf geladen werden, sodass der Browser beim ersten Seitenaufruf nur den Code lädt, der tatsächlich benötigt wird. Tree Shaking erkennt und entfernt automatisch Code, der zwar in einer Bibliothek vorhanden, aber in Ihrer Anwendung nirgends verwendet wird. Und für den ersten sichtbaren Bereich der Seite kann es sinnvoll sein, das kritische CSS, also die Styles, die für die sofort sichtbaren Elemente benötigt werden, direkt in den HTML-Code einzubetten und die restlichen Styles erst anschließend asynchron nachzuladen.
7.4 Caching im Browser
Richtiges Browser-Caching sorgt dafür, dass wiederkehrende Besucher Ihre Website deutlich schneller laden, weil bereits heruntergeladene Ressourcen wiederverwendet werden, statt sie erneut vom Server anzufordern.
Die Grundidee ist einfach: Statische Assets wie JavaScript-Dateien, Stylesheets und Bilder, die sich zwischen Deployments nicht ändern, sollten mit langen Cache-Laufzeiten versehen werden. Wenn Sie einen Content-Hash im Dateinamen verwenden (zum Beispiel style.a3b2c1.css), können Sie eine Laufzeit von einem Jahr setzen (Cache-Control: public, max-age=3153600, immutable), ohne befürchten zu müssen, dass Nutzer veraltete Versionen sehen. Bei Änderungen ändert sich der Hash und damit die URL, sodass der Browser automatisch die neue Version lädt.
Für HTML-Dokumente hingegen sollte der Cache so konfiguriert werden, dass der Browser bei jedem Aufruf beim Server nachfragt, ob eine neuere Version vorliegt (Cache-Control: no-cache, must-revalidate mit ETag). So stellen Sie sicher, dass Nutzer immer den aktuellen Inhalt sehen, während der Server durch ein kurzes "Nicht geändert"-Signal (HTTP 304) unnötige Datenübertragungen vermeidet.
7.5 CDN einsetzen
Ein Content Delivery Network (CDN) speichert Kopien Ihrer statischen Inhalte auf Servern, die über die ganze Welt verteilt sind, und liefert sie jeweils vom Standort aus, der dem anfragenden Nutzer am nächsten liegt. Dadurch sinkt die physische Entfernung zwischen Nutzer und Server, was sich direkt in einer niedrigeren TTFB und einer kürzeren Gesamtladezeit niederschlägt.
Dieser Effekt ist besonders spürbar bei Websites mit internationalem Publikum, aber auch innerhalb Deutschlands kann ein CDN die Ladezeit verbessern, indem es den eigenen Server entlastet und Lastspitzen abfängt. Gängige Anbieter wie Cloudflare, AWS CloudFront, Fastly oder Bunny.net bieten neben der reinen Auslieferung oft auch zusätzliche Funktionen wie automatische Bildoptimierung, DDoS-Schutz und Edge Computing.
7.6 Spekulative Navigation (Speculation Rules API)
Eine der spannendsten Neuerungen der letzten Jahre ist die Speculation Rules API. Sie ermöglicht es dem Browser, Seiten bereits im Hintergrund vorzuladen oder sogar vollständig zu rendern, noch bevor der Nutzer sie aufruft. Navigiert der Nutzer dann tatsächlich zu einer vorgeladenen Seite, erscheint diese nahezu sofort.
Die API kennt zwei Stufen: Beim Prefetch werden die Ressourcen einer Seite im Hintergrund heruntergeladen, aber noch nicht gerendert. Beim Prerender wird die Seite zusätzlich vollständig im Hintergrund aufgebaut. Beim Navigieren muss der Browser sie nur noch anzeigen, was zu einer wahrgenommenen Ladezeit von nahezu null führt.
WordPress hat diese Technologie in Version 6.8 (März 2025) nativ integriert, sodass WordPress-Websites automatisch von spekulativem Vorladen profitieren können. Die Browser-Unterstützung umfasst derzeit Chrome und Edge. Firefox und Safari unterstützen die API noch nicht.
7.7 Layout-Stabilität verbessern (CLS)
Layout-Verschiebungen lassen sich mit einigen gezielten Maßnahmen zuverlässig vermeiden. Geben Sie für alle Bilder und Videos feste Abmessungen über die Attribute width und height an, damit der Browser den benötigten Platz bereits reservieren kann, bevor die Ressource geladen ist. Reservieren Sie Platzhalter für Inhalte, die nachgeladen werden, etwa Werbeanzeigen oder eingebettete Inhalte von Drittanbietern. Verwenden Sie für Webfonts die CSS-Eigenschaft font-display: swap zusammen mit einer passenden System-Fallback-Schriftart, damit der Text sofort sichtbar ist und sich beim Laden der Webfont nicht verschiebt. Und vermeiden Sie es, Inhalte nachträglich oberhalb des bereits sichtbaren Bereichs einzufügen, da dies den gesamten darunterliegenden Inhalt nach unten drückt.