Slide 1

Slide 1 text

Mythbuster WordPress Performance

Slide 2

Slide 2 text

Was kann langsam sein? Webseite PHP + MySQL Server Theme

Slide 3

Slide 3 text

Wie läuft ein Request? Besucher fragt Webseite beim Server an Server leitet Anfrage an WordPress weiter WordPress holt Inhalte aus Datenbank WordPress erzeugt aus Daten, Theme und Plugins HTML WordPress liefert HTML an Server zurück Server reicht HTML an Besucher zurück Besucher fragt CSS, JS, Bilder, etc. beim Server an Server schickt CSS, JS, Bilder zurück

Slide 4

Slide 4 text

Wie ausgelastet ist so ein Server? Munin (Server Profiling)

Slide 5

Slide 5 text

Wie lange lädt reines HTML? • Auslieferung reines HTML ~ 100ms Ohne Caches, Ohne Browser Komprimierung

Slide 6

Slide 6 text

Wie lange lädt WordPress? • Auslieferung WordPress HTML ~ 1000ms Ohne Caches, Mit Browser Komprimierung

Slide 7

Slide 7 text

Was passiert unter der Haube? NewRelic (Anwendungs Profiling - kostenpflichtig)

Slide 8

Slide 8 text

Welche Annahmen gelten? • WordPress selbst ist performant. Plugins und Themes machen die Probleme. • Drittanbieter Code kann nicht vernünftig von außen optimiert werden • Optimierungen direkt an der Wurzel des Übels – „Onpage“ Optimierungen => Theme – Server Optimierungen => Server / PHP / MySQL Configs

Slide 9

Slide 9 text

WAS BRINGT WELCHE OPTIMIERUNG WIRKLICH? MYTHBUSTER Disclaimer: Die folgende Bewertungen beziehen sich auf eine durchschnittliche, normale WordPress Webseite! Je nach Setup und Anforderungen kann die Bewertung auch anders aussehen.

Slide 10

Slide 10 text

• Wenige sinnvolle Anwendungsfälle: – Große Dateien (Filme / Programme) – Seite muss global schnell sein • Kosten pro GB (unkalkulierbar) • Datenschutzproblematik Macht ein CDN Seiten schneller? Statische Dateien (CSS, JS, IMG) in ein Content Distribution Network auslagern

Slide 11

Slide 11 text

Löst ein Varnish alle Probleme? Vorgelagerter Caching Server speichert Antworten des Servers und liefert diese direkt aus • Aufwändige Konfiguration • Spezialwissen notwendig • Kaum Vorteile gegenüber Server Caching • Probleme mit Inhalten die im Cache festhängen möglich • Zusätzliche Ressourcen notwendig

Slide 12

Slide 12 text

Macht bessere Hardware alles besser? Server / Hosting mit SSDs und moderner CPU • Hardware ist nur selten der Flaschenhals • Bei „Shared Hosting“ selten Einfluss auf die Hardware • Wechsel bei alten Verträgen (> 2 Jahre) kann sinnvoll sein • SSD einziger Punkt, der spürbaren Unterschied bringt

Slide 13

Slide 13 text

Server Konfigurationen optimieren Memory Limits, Ressourcen Limits, Tuning der Default Einstellungen • Spezielles Know-How notwendig • Änderungen nur mit root Zugang möglich • Standard Einstellungen nie auf individuellen Anwendungsfall ausgerichtet • Tuning von php & MySQL kann spürbare Leistungsgewinne bringen (Memory Caches)

Slide 14

Slide 14 text

JS / CSS / IMG Optimierungen Includes optimieren (Header / Footer), Dateien minimieren / zusammenfassen, kein Inline Code, Lazy Loading von Bildern • Riesiges Optimierungspotenzial • Wirklich sinnvoll und effizient nur direkt im Theme • Aufwände nicht zu unterschätzen • Nachträglich nur schwierig oder ineffizient umzusetzen

Slide 15

Slide 15 text

Komprimierung Dateien vom Server vor Übertragung mit gzip / deflate packen lassen • Simple Einstellung in .htaccess oder nginx Config • CSS, JS, HTML werden gepackt • Benötigte CPU-Last (Server / Browser) zu vernachlässigen • Riesiger Nutzen (80% weniger Seitengröße)

Slide 16

Slide 16 text

Browser Caching Statische Dateien direkt im Browser des Users speichern • Simple Einstellung in .htaccess oder nginx Config • Browser lädt HTML, CSS, JS, Bilder,… nur initial und speichert diese • Dateien werden dann aus dem Browser Cache geladen statt vom Server • Bei Updates von Dateien auf dem Server kann es zu Problemen kommen (Besucher hat noch alte Dateien im Cache)

Slide 17

Slide 17 text

Server Caching Umgehung von PHP / MySQL bei so vielen Anfragen wie möglich • Initiale Einrichtung aufwändig (Plugin + Server) • Plugin in WordPress erzeugt HTML aus Seiten – Plugins: Cachify, W3TotalCache, WP-Super Cache • HTML liegt auf SSD oder im RAM • Besucher bekommt HTML direkt vom Webserver • Keine PHP / MySQL Last mehr durch Besucher • Dynamische Seiten dürfen nicht gecacht werden (Community, Shops, etc.)

Slide 18

Slide 18 text

Caching – Fallstricke • Bei Codeänderungen (js, css, Grafiken) können alte Versionen im Cache verbleiben – Lösung: Cache Buster (Parameter mit Version des Themes / Plugins an Dateien anhängen -> style.css?v=1.2. Nach Update: style.css?v=1.3) • Bei Inhaltsänderungen (Beiträge, Seiten) können alte Versionen im Cache verbleiben – Lösung: Caching Plugin muss statischen Cache bei Events (z.B. Post publish) löschen • Nicht / nur eingeschränkt für voll-dynamische Webseiten (Community, Shops) geeignet

Slide 19

Slide 19 text

Optimierungs Plugins nutzen? • PHP = (Zweit-) größtes Optimierungspotenzial • Plugins = (Längere) PHP Ladezeit • 90% der Funktionen der Plugins können direkt im Theme oder am Server umgesetzt werden • Einfache Optimierung: Plugins deaktivieren