Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mythbusters - WordPress Performance Optimierung

Mythbusters - WordPress Performance Optimierung

WordPress Performance Optimierung ist ein Thema, das oft in Blogs und Marketingtexten aufgegriffen wird. In meinem Talk vom WordCamp Nürnberg zeigt ich, welche Optimierungen für normale WordPress Seiten wirklich sinnvoll sind und welche Themen aus technischer Sicht viel Aufwand, aber wenig Nutzen bringen.

6574ee7c61e5e961ba64928fad6615e5?s=128

Jan Thiel

April 17, 2016
Tweet

Transcript

  1. Mythbuster WordPress Performance

  2. Was kann langsam sein? Webseite PHP + MySQL Server Theme

  3. 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
  4. Wie ausgelastet ist so ein Server? Munin (Server Profiling)

  5. Wie lange lädt reines HTML? • Auslieferung reines HTML ~

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

    Ohne Caches, Mit Browser Komprimierung
  7. Was passiert unter der Haube? NewRelic (Anwendungs Profiling - kostenpflichtig)

  8. 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
  9. 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.
  10. • 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
  11. 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
  12. 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
  13. 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)
  14. 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
  15. 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)
  16. 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)
  17. 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.)
  18. 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
  19. 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