WordPress Caching, schneller Webseiten im Handumdrehen

Oft sind WordPress Webseiten sehr langsam, dies liegt aber kaum an einem schlechten Webserver, sondern an einem Überladenem WordPress.

Hier die Definition von Cache lt. Wikipedia.
HTTP Caching ist eine Technik im Hypertext Transfer Protocol (HTTP), um Ressourcen (Dokumente, Bilder, Dateien allgemein) anhand bestimmter Kriterien in einem Cache zwischenzuspeichern, um unnötige Datenübertragungen, Serveranfragen zu vermeiden und Zugriffszeiten zu verringern.

Plugins sind ja eine beliebte Möglichkeit dein WordPress zu erweitern, leider werden oft immer mehr CSS oder JS Dateien geladen und dies führt zu längeren Ladezeiten.

Ich habe nun einige Zeit mir Caching Plugins verbracht, mal bessere, Mal schlechtere, Mal bis hin zum tot der WordPress Installation.

Damit Google Page Speed schnell gute Ergebnisse erzielt sollten ein paar Sachen und Codeteile von WordPress optimiert werden. Einige Sachen lassen sich mit google Page Speed nur schwer optimieren zb extern geladene Scripte.
Auch gehen die Meinungen stark auseinander, ob das überhaupt was bringt.

Dauert das Laden einer Website zu lange, brechen viele Nutzer den Vorgang ab (Bounces). Bei einer Ladezeit zwischen 1s und 3s erhöhen sich die Abbrüche bereits um 32%. Bei bis zu 6s Ladezeit verdoppeln sich die Abbrüche.

Fakt ist, Google Page Speed hat das Ziel die Webseite so schnell wie nur möglich dem Besucher darzustellen.

 

Was ist die Ladezeit eigentlich genau?

Jedes Mal, wenn eine Website Adresse (URL) im Browser aufgerufen wird sendet Ihr PC eine Anfrage an Ihren Internet-Service-Provider (zB. drei.at, A1).
Diese Anfrage besteht aus der IP-Adresse Ihres Computers und der Webadresse der Website, die Sie aufrufen möchten. Der Internet-Service-Provider sendet Ihre Anfrage weiter an einen DNS-Server (Domain-Name-System) dies ist ein Verzeichnis und löst die Webadresse auf eine IP-Adresse auf. Jetzt kann die Verbindung hergestellt und Dateien ausgetauscht werden. Für jede neue Datei wird ein http-request an den Server gesendet.

Optimierung

Anzahl der HTTP Request minimieren

  • HTTP Request minimieren
  • CSS Zusammenführen
  • Javascript Zusammenführen
  • Caching Tools verwenden
  • Asynchrones Laden

Das Allheilmittel mit welchen Plugins ihr das beste Ergebnis erzielt gibt es nicht, es ist immer ein herumspielen. Hier ein paar Plugins, mit denen ich bei verschiedenen Themes sehr gute Ergebnisse erzielt habe:

Autoptimize – Caching Plugin, CSS / HTML / Java Optimierung
Autoptimize Critical CSS – ist eine Erweiterung um kritisches CSS auf verschiedenen Seiten hinzuzufügen.
Dieses Plugin bietet in den Einstellung Asynchrones laden als „Erweiterung“ an
WP Fastest Cache– Dieses Caching Tool ist sehr einfach und zählt auch eines zu den besten Tools. – kann gerne in Kombination mit Autoptimize verwendet werden.
Smush – Automatisiert optimierte Bilder und das Lazy load ist sehr gut.
Jetpack – Bietet auch schon einige Optimierung

Wichtig dabei ist, dass Ihr auf keinem Fall zwei Caching Module für den gleichen Job aktiviert. z. B..: HTML optimieren in zwei verschiedenen Caching Modulen.

Schaut auf jeden Fall einen Blick in die .htaccess Datei, dort kann der Cache TTL und Komprimierung nachgeschaut und gegebenenfalls angepasst werden.

Hier ein paar Beispiele:

Komprimieren der Inhalte mit Deflate nach Dateityp

# Deflate Compression by FileType
<IfModule mod_deflate.c>
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE text/javascript
 AddOutputFilterByType DEFLATE application/xml
 AddOutputFilterByType DEFLATE application/xhtml+xml
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/atom_xml
 AddOutputFilterByType DEFLATE application/javascript
 AddOutputFilterByType DEFLATE application/x-javascript
 AddOutputFilterByType DEFLATE application/x-shockwave-flash
</IfModule>

Caching TTL

# turns cache on for 1 month
<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresByType text/css "access plus 1 month"
 ExpiresByType text/javascript "access plus 1 month"
 ExpiresByType text/html "access plus 1 month"
 ExpiresByType application/javascript "access plus 1 month"
 ExpiresByType image/gif "access plus 1 month"
 ExpiresByType image/jpeg "access plus 1 month"
 ExpiresByType image/png "access plus 1 month"
 ExpiresByType image/x-icon "access plus 1 month"
</IfModule>
<ifmodule mod_headers.c>
 <filesmatch "\\.(ico|jpe?g|png|gif|swf)$">
  Header set Cache-Control "max-age=2592000, public"
 </filesmatch>
 <filesmatch "\\.(css)$">
  Header set Cache-Control "max-age=604800, public"
 </filesmatch>
 <filesmatch "\\.(js)$">
  Header set Cache-Control "max-age=216000, private"
 </filesmatch>
</ifmodule>

Komprimieren der Inhalte mit Deflate nach Dateiendungen

Diese Variante ist alternativ für DEFLATE und Cache TTL anzusehen sofern keine granulare Trennung zwischen den Dateitypen stattfinden soll

# Deflate Compression by MimeType
<IfModule mod_deflate.c>
 <FilesMatch "\.(js|jpg|jpeg|gif|png|css)$">
  ExpiresActive on
  ExpiresDefault "access plus 1 month"
  SetOutputFilter DEFLATE
 </FilesMatch>
</IfModule>

Alternative Komprimierung der Inhalte mit gzip

gzip Compression ist nicht (mehr) auf jedem Server verfügbar. Solltest Du Dich dennoch dafür interessieren gzip, statt DEFLATE zu verwenden, findest Du die Anweisungen hier:

# gzip Compression if availiable
<IfModule mod_gzip.c>
 mod_gzip_on       Yes
 mod_gzip_dechunk  Yes
 mod_gzip_item_include file      \.(html?|txt|css|js|php|pl)$
 mod_gzip_item_include handler   ^cgi-script$
 mod_gzip_item_include mime      ^text/.*
 mod_gzip_item_include mime      ^application/x-javascript.*
 mod_gzip_item_exclude mime      ^image/.*
 mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

Verplempert nicht all zu viel Zeit mit Google Page Speed – es gibt auch noch getmetrix Tool, dieses hat viele Vorteile, die Google Page Speed nicht hat!
Hoffe, ich konnte dem ein oder anderem etwas damit helfen.

Christoph Purin
Christoph Purin

Mein Name ist Christoph Purin und befasse mich mit IoT Geräten wie Raspberry, Arduino, ESP. Auch Aktivitäten wie die FFW, Quad-fahren, Amateurfunk zählen zu meinen bevorzugten Hobbys.
Dieser Blog, stellt eine Sammlung meiner Projekte dar, wie Dinge gelöst oder umgebaut werden können.

Artikel: 345

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert