Einführung

Mit der Zeit wird WordPress langsam, überladen und es macht kaum mehr Freude, damit zu arbeiten. Wir zeigen dir, wie wir unsere WordPress Sites regelmässig aufräumen, damit diese so Stabil wie möglich sind und so schnell wie möglich arbeiten. Hierzu gibt es Technische Aspekte (betreffend Webserver) als auch Software Technische (in WordPress selber) Aspekte.

Technisch

Zuerst gehen wir auf die Technik ein. Vorweg, ein Hosting auf einem Server, welcher dich wenige Franken (unter 20.-) im Monat kostet, ist in der Regel schon fast zum Tode verurteilt. Dort teilst du in der Regel den Webserver mit meist x tausend anderen Website Besitzern. Somit lohnt es sich schnell mal etwas mehr Geld in die Hand zu nehmen und einen Root Server oder ähnliches zu Mieten, damit auch du und nur du auf dem Server unterwegs bist. Wir gehen bei diesem Post auch nur auf Apache ein.

HTTP/2 oder höher

Du solltest darauf achten, dass du mindestens HTTP/2 verwendest. Diverse günstige Hoster lassen die Websites auf HTTP/1.0 oder HTTP/1.1 laufen.

Vorteile

Dies bringt dir natürlich Vorteile. – Klar dieser Punkt muss man nicht jedes mal Checken, aber einmal sollte es gemacht werden.

  • die Möglichkeit des Zusammenfassens mehrerer Anfragen
  • weitergehende Datenkompressionsmöglichkeiten
  • binär kodierte Übertragung von inhalten
  • Server-initiierte Datenübertragung (push-Verfahren)
  • einzelne Streams lassen sich priorisieren

Vereinfacht gesagt heisst dies nichts weiter als «du Fährst nicht mehr auf einer Einweg Fahrbahn, sondern auf einer mehrspurigen».

Überprüfen

Natürlich kannst du dies einfach überprüfen indem du z.B. über folgendes Portal eine Prüfung durchlaufen lässt:

HTTP/2 Pro Check

Ist dein WebServer HTTP/2 ready bzw. deine Website läuft bereits so, dann sieht dies so aus:

Ist deine Website nicht HTTP/2 Ready – wie es leider noch bei so manchen «grossen» Hostern ist wie z.B. unserem alten Partner, sieht dies so aus:

Jetzt gibt es 2 Varianten. Du hast SSH Zugriff auf deinen Webserver und kannst es allenfalls nachinstallieren (sehr Unwahrscheinlich bei grossen Hostern, sofern du keinen Root Server hast) oder du wechselst den Hoster zu einem, welcher dies unterstützt. Natürlich kannst du auch deinen Aktuellen Hoster fragen, ob er dieses Feature installiert. Wobei erfahrungsgemäss diese sich eher weigern.. Wieso auch immer.

.htaccess Datei

Was ist das? Dieser «kleine» Helfer, ist im Grunde ein wahrer alleskönner. Nebst dem, dass er deine Website sicherer machen kann (z.B. damit ein End-User Daten nicht abrufen kann), kann dir diese kleine unscheinbare Datei auch viel Performance bringen.

Wo finde ich diese Datei?

Nun, einerseits hast du in der Regel direkt in deinem Root Verzeichnis eine (um welche es hier auch geht) sowie in diversen oder praktisch jedem Unterordner.

Wie sieht der Inhalt aus?

Hast du nur WordPress installiert, wird im Normalfall folgender Eintrag angelegt:

# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen `BEGIN WordPress` und `END WordPress` sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Diesen Code lassen wir auch definitiv unverändert.

Prüfen ob ein Editieren notwendig ist (GZip)

Bevor wir hier etwas verändern, schauen wir uns zuerst einmal an ob es überhaupt notwendig ist. Möglicherweise hat dein Hoster dies über das Backend eingerichtet, dass der Webserver dies sowieso schon alles macht.

Wir verwenden jeweils dieses Tool:

GZip Überprüfen by vavy

So sieht es aus, wenn die Komprimierung NICHT aktiviert ist:

Und so, wenn sie Aktiviert ist:

Unser Ziel ist jeweils 80% oder mehr zu erreichen.

Um dies zu aktivieren, kannst du folgenden Eintrag in deiner .htaccess Datei vornehmen (BITTE VORHER EIN BACKUP ERSTELLEN!)

# GZip
<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.*
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>

Sollte in dieser Datei etwas falsch gemacht werden, kann es sein, dass die Website über den Browser nicht mehr erreichbar ist!

Expires Header

Damit nicht immer alles komplett geladen werden soll, gibt es auch hier einen kleinen Trick. Hierzu müssen wir auch unsere begehrte .htaccess Datei zu liebe nehmen.

Der Code sieht z.B. wie folgt aus:

# Expire headers
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rdf+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/schema+json "access plus 0 seconds"
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/manifest+json "access plus 1 year"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType font/eot "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType text/x-cross-domain-policy "access plus 1 week"
</IfModule>

Auch hier gilt, zuerst eine SICHERHEITSKOPIE der funktionierenden .htaccess Datei anzulegen!

ETags Entfernen

ETags wurden mit HTTP/1.1 eingeführt. Diese sollten das Caching verbessern. In der Praxis erwies sich dies jedoch nicht als sonderlich Sinnvoll. Solltest du HTTP/2.0 oder höher verwenden, kannst du diese sicherlich entfernen. Testen konnten wir es leider nicht mit einem HTTP/1.1 oder ähnlich fähigem Server, da bei uns alles HTTP/2.0 oder höher ist.

Auch dies gehört in unsere heissbegehrte .htaccess Datei. Und auch hier gilt:
ERST EINE SICHERUNG ANLEGEN!

# ETags
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None

Keep Alive!

Wenn du die Datenübertragung auf keep-alive setzt, ermöglichst du mehrere Dateien über die selbe Verbindung zu laden. Sprich, es wird nicht jedes mal eine neue Verbindung geöffnet, sondern die Verbindung bleibt bestehen, was den Datentransfer beschleunigt. Dies sieht wie folgt aus und auch hier wie immer: ERST EINE SICHERUNG ANLEGEN unserer .htaccess Datei.

# Keep alive
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

Hinweis für Kunden unseres Hostings

Bei uns ist der Eingriff in die .htaccess Datei nicht Notwendig. Wir haben die Entsprechenden Snippets im Backend bereitgestellt. Somit könnt ihr dies ganz Einfach einfügen und verwenden. Somit ist auch nicht zwingend ein Backup der .htaccess Datei notwendig, da ihr diese zu jeder Zeit über unser Backend editieren könnt.

Softwaretechnisch (In WordPress)

Zuerst auch hier der kleine Tipp Erstelle ein Backup, mindestens von deiner Datenbank! Auch hier kann schnell einmal etwas schief gehen oder zu schnell gelöscht werden.

Aktualisieren!

Ja, so mühsam es ist, Ständig neue Updates usw. Das muss leider sein, da oft in verschiedenen Plugins etc. diverse Optimierungen oder gar neue Funktionen verfügbar sind. Halte wenn möglich deine Seite Aktuell. Nicht nur WordPress selber (Sicherheits Updates usw!) sondern auch alles deine Plugins!

Unbenutzte Kategorien / Schlagwörter entfernen

Unter «Beiträge» –> Kategorien / Schlagwörter immer mal wieder ausmisten. Ganz einfach, einerseits erleichtert dir dies die Zuordnung, andererseits hast du in gewissen Gruppen vielleicht gar keine Einträge? Wenn dies so ist, wird nur unnötiger Ballast geladen, welches die Site langsamer macht.

Bilder, Bilder, Bilder, …

Auch bei uns wurde Festgestellt, die Bilder fressen viel Platz. Teilweise sind diese eigentlich in Beiträgen auch ersetzt worden, da z.B. ein Bild in einem oder 2 Beiträgen besser passt als je 2 einzelne. Somit sind diese einfach unnötig auf dem Server.

Hierzu unter «Medien» –> Medienübersicht wie folgt einstellen:

Aber auch diese Funktion ist mit Vorsicht zu geniessen! Mannchmal ist ein Bild trotzdem verknüpft, aber WordPress findet den Zusammenhang nicht. Darum, aufpassen und nur die löschen, bei welchen ihr wirklich sicher seid, dass diese nicht mehr benötigt werden.

Seiten, Entwürfe, …

Du hast mit der Zeit sicherlich auch die Website überarbeitet und diverse Seiten liegen im Papierkorb, in den Entwürfen usw. Auch hier gilt, lösche, was du nicht mehr benötigst! Somit reduzierst du den benötigten Speicherplatz. Für dich wird es mit der Zeit auch übersichtlicher. Denn wenn du z.B. 200 Seiten hast und 30 davon in Gebrauch sind und du dann in den 170 Entwürfen etwas suchst, … Ja, merkt man schnell selber wieso das dies gut ist.

Kommentare

Auch bei den Kommentaren ist es wichtig immer wieder rein zu schauen. Wieso? Einerseits möchtest du nicht als Werbeplattform dienen für irgendwelche Dubiosen Geschäften (haben wir immer mal wieder Einträge von Bots), als auch sonstige Spam Kommentare oder solche mit z.B. Gesetzlich Fragwürdigen Ideologien.

Themes!

Beim Erstellen deiner Website hast du sicherlich mehrere Themes ausprobiert. Nun hast du wahrscheinlich diverse Installiert. Diese kannst du eigentlich alle Löschen ausser natürlich das verwendete. Wenn du jeweils Dinge versuchst, welche schief gehen könnten, empfiehlt es sich entweder ein Standard Theme von WordPress installiert zu belassen oder bevor du so etwas versuchst dieses jeweils zu installieren. Solltest du aber grundsätzlich keine Designtechnischen Änderungen mehr machen, kannst du diese im Normalfall ebenfalls entfernen.

Plugins

Auch hier sammeln sich oft diverse «Freunde» an.
Alle Deaktivierten Plugin kannst du eigentlich löschen. Diese sind ja auch aus einem Grund nicht aktiv – du benötigst diese nicht (mehr). Das alleinige Deaktiveren der Plugins reicht leider meist nicht, dass diese aus dem Header usw. entfernt werden und wirklich nicht mehr geladen werden. Oft werden trotzdem kleine Teile des Plugins geladen.
Auch bei den Aktiven solltest du immer mal wieder rein schauen, ob diese wirklich noch benötigt werden oder vielleicht auch aus zwei Plugins mittlerweilen eins machen kannst (da z.B. neue Funktionen gekommen sind wobei eines überflüssig wird) oder du allgemein eine super Alternative gefunden hast.

Purge FVM cache

Wir nutzen gerne dieses Plugin:

Hier löschen wir selber, wenn wir gerade eine Wartung machen den Cache.
Dies stellt für uns sicher, dass die Cache immer mal wieder neu erstellt wird, was gerade nach Design Änderungen wichtig ist oder hinzufügen neuer Funktionen etc. – In der Regel sollte dies Automatisiert passieren, aber manchmal ist Kontrolle eben doch besser.

WebP Express!

Auch hier haben wir ein Plugin, welches uns immer wieder spass macht einzusetzen.

Wir lassen ab und an mal alle Bilder Löschen und generieren neue WebP. Natürlich ist das Löschen nicht notwendig. Aber so stellen wir für uns sicher, dass definitiv alle Bilder entsprechend Konvertiert werden. Da beim Beiträge schreiben auch immer mehr neue Bilder dazu kommen, ist es schlicht weg Notwendig zwischen durch einmal die Bilder wieder anzupassen.

Cache Enabler

Auch dieses Plugin ist für uns ein sehr guter Freund. Hier musst du nichts machen, aber ist trotzdem für uns hier im Bericht relevant, dass du prüfst ob du ein Cache Plugin überhaupt hast.

Auch Defekte Links können eine Website langsam machen, wenn diese z.B. während des Ladevorganges geladen werden sollten.
Hierzu verwenden wir dieses kleine schlanke Tool:

Datenbank

Für die Datenbank nutzen wir 2 Tools.

Sweep!

Dies ist ein kleines kostenloses Tool, welches einfach Sauber macht. Achtung, Datenbank Backup nicht vergessen!

WPOptimize

Ebenfalls für die Optimierung der Datenbank nehmen wir dieses Plugin. Achtung: Datenbank Backup!

Dieses Plugin besitzt noch weitere Funktionen, welche wir jedoch nicht benutzen.

Schlusswort

Natürlich kann man noch ewige Listen machen, mit weiteren Optimeriungen, aufräum Arbeiten usw. Arber mit diesen haben wir für uns das Beste Aufwand / Ergebnis ziel erreicht.

Gerne dürft ihr auch noch Tipps von euch Beitragen, wenn Ihr findet, wir haben etwas vergessen. Gerne prüfen wir dies auch und würden dies entsprechend ergänzen.

Tags

No responses yet

Schreibe einen Kommentar

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