WordPress Performance und Page Speed Optimierung

(Last Updated On: 24. Juli 2018)

Die Performance einer Webseite ist heutzutage ein wichtiges Merkmal für die Platzierung in der Google Trefferliste. Daher wird die Performanceoptimierung eines Webauftrittes mehr und mehr zum Thema einer Suchmaschinenoptimierung. Google bevorzugt Webinhalte mit einer guten Google Page Speed Insights Bewertung. Sie selbst können das Tool verwenden, um die Bewertung Ihrer Webseite einzusehen und auf den Prüfstand zu stellen.

Ziel einer Page Speed Optimierung sollte es sein, sowohl im Mobile- als auch im Desktop-Rating im grünen Bereich zu landen, also bei etwa 80 Punkten oder höher. 100 Punkte müssen Sie nicht unbedingt erreichen. In diesem ersten Beitrag zeigen wir Ihnen, wie Sie unter WordPress den Sprung auf die 80-Punkte-Marke schaffen. In einem zweiten Beitrag sprengen wir diese Marke und streben dann auf die 100 Punkte zu.

Umstellung auf PHP7.2-FPM

Ein erster Schritt in Richtung bessere Performance Ihrer Webseite kann ein Wechsel von einer älteren PHP-Version (5.6 oder älter) auf PHP7 sein. Aber auch unterhalb der PHP7 Minor Releases gibt es Performanceunterschiede. So kann PHP 7.2 beispielsweise rund 10% mehr Anfragen pro Sekunde beantworten als PHP 7.1. Sie sollten also nach Möglichkeit gleich auf PHP 7.2 gehen.

Hinweis: Bevor Sie auf PHP7 gehen, sollten Sie sicher stellen, dass sich Ihre WordPress-Installation auf der neuesten Version, die unter Ihrer aktuellen PHP Version lauffähig ist, befindet. Aktualisieren Sie erst Ihr WordPress und dann erst die PHP-Version. Veraltete Plugins und Themes sowie Eigenentwicklungen können unter PHP7 nicht mehr lauffähig sein. Unter einem Admin-Panel wie Onyx Plesk ist es ziemlich einfach, PHP 7.2 zu installieren. Dazu begeben Sie sich im Plesk Panel nach Tools & Settings -> Plesk -> Updates and Upgrades

 

Onyx Plesk PHP 7.2 installieren für mehr Performance

Onyx Plesk PHP 7.2 installieren für mehr Performance

In einem neuen Tab öffnet sich das Update und Upgrade Frontend von Plesk (Standard-Port 8447). Wählen Sie dort Add/Remove Components

PHP 7.2 Unterstützung hinzufügen Onyx Plesk

PHP 7.2 Unterstützung hinzufügen Onyx Plesk

Wählen Sie dort PHP 7.2 zur Installation aus unter Web Hosting -> PHP interpreter versions -> PHP 7.2

Wordpress Performance unter PHP 7.2

WordPress Performance unter PHP 7.2

Nun müssen Sie nur noch auf die PHP Settings der jeweiligen Domain gehen.

Onyx Plesk PHP 7.2 einstellen

Onyx Plesk PHP 7.2 einstellen

und stellen im nächsten Schritt auf PHP7.2-FPM. Der Zusatz FPM bezeichnet hierbei den FastCGI Process Manager. Wenn Sie den PHP-Intrepreter über FastCGI laufen lassen, ist die Ausführung noch einmal um ein ganzes Stück performanter.

PHP7.2-FPM FastCGI Process Manager

PHP7.2-FPM FastCGI Process Manager

Ab jetzt läuft Ihre Instanz unter PHP7.2-FPM. Diesen Sprung werden Sie insbesondere dann merken, wenn Sie zuvor noch auf PHP 5.X waren.

Umstellung auf HTTP2

Unter Onyx Plesk können Sie außerdem über das Onyx Kommandozeilentool den nginx-Webserver so einstellen, dass er HTTP/2 unterstützt. Zunächst müssen Sie allerdings zwei Dinge tun.

Prüfen Sie zunächst, ob der nginx Webserver bei Ihnen installiert ist und in einer Version >=1.11.4.1 vorliegt.  Wählen Sie dazu im Plesk Panel Tools & Settings -> Server Management -> Server Components

Wordpress und Onyx Plesk auf HTTP/2 umstellen

Suchen Sie im Folgefenster nach nginx und finden Sie die Version Ihres Servers heraus.

Onyx Plesk nginx Version rausfinden

Sollte der nginx Webserver bei Ihnen nicht installiert sein, können Sie ihn über Tools & Settings -> Plesk -> Updates and Upgrades nachinstallieren.

Onyx Plesk nginx nachinstallieren

Als nächstes sollten Sie sicher stellen, dass der nginx entweder als Webserver oder – noch besser – als Reverse Proxy fungiert. Dies kontrollieren Sie in den Apache & nginx Settings Ihres Webauftritts

Onyx Plesk nginx als Reverse Proxy konfigurieren

nginx Proxy Mode auf Onyx Plesk

Sobald nginx bei Ihnen installiert, aktuell und konfiguriert ist, können Sie HTTP/2 Support aktiiveren. Loggen Sie sich dazu auf Kommandozeilenebene auf Ihrem Server ein und führen Sie die plesk-Binary mit folgendem Befehl als root aus.

plesk bin http2_pref enable

Onyx Plesk HTTP2 für nginx und WordPress aktivieren

Zu guter letzt testen Sie, ob Ihre WordPress-Seite nun HTTP/2 unterstützt. Um dies zu testen, gibt es einfach zu nutzendes Tool von KeyCDN.

Testen ob WordPress Installation HTTP2 unterstützt

Aktivieren Sie OCSP Stapling für Ihren Apache oder nginx Webserver

In meinem Beitrag über die Auswirkungen von HTTPS-Verschlüsselung auf das Google-Suchmaschinenranking bin ich auf die Performance-Vorteile von OCSP Stapling eingegangen. OCSP Stapling führt dazu, dass der Besucher Ihrer Website nicht bei der CA anfragen muss, ob Ihr SSL-Zertifikat gültig ist.

Ob Ihr Server schon heute OCSP Stapling unterstützt, können Sie mit diesem Online-Test von DigiCert prüfen. Dies bringt Performancevorteile, da er die Antwort direkt von Ihnen bekommt. Ist dies bereits jetzt der Fall, bekommen Sie einen entsprechenden Hinweis. Immer dann, wenn Sie HTTPS oder HTTP2 einsetzen, sollten Sie daher OCSP Stapling aktivieren.

OCSP Stapling unter nginx oder Apache aktivieren

OCSP Stapling unter nginx oder Apache – ist es aktiviert?

Alternativ testen Sie selbst auf einer Linux-Kommandozeile mit curl

openssl.exe s_client -connect [yoursite.com]:443 -status

Bei aktiviertem OCSP Stapling finden Sie in der Antwort eine Zeile vor im Format

OCSP Response Status: successful (0x0)

Falls Sie hier keine zutreffende Antwort bekommen, müssen Sie OCSP Stapling erst noch aktivieren. Zuvor gilt es jedoch einiges zu prüfen. OCSP Stapling zu aktivieren macht nur dann Sinn, wenn Ihr Server das Intermediate Certificate mit sendet. Auch dies zeigt Ihnen der oben verlinkte Test an.

das Intermediate Certificate muss gesendet werden, bevor man OCSP Stapling in Apache oder nginx aktiviert.

das Intermediate Certificate muss gesendet werden, bevor man OCSP Stapling in Apache oder nginx aktiviert.

Außerdem muss Ihr Webserver auf den OCSP-Server der CA zugreifen können. Dies können Sie testen, indem Sie sich auf Kommandozeilenebene auf dem Server einloggen und dann mit curl oder Wget den OCSP-Ping-Service der CA ansteuern.

curl ocsp.digicert.com/ping.html

beziehungsweise

wget ocsp.digicert.com/ping.html

Wenn nun auch dies möglich ist, sind alle Voraussetzungen geschaffen, um OCSP Stapling auf Ihrem Webserver zu aktivieren. Wenn Sie einen nginx Webserver verwenden (entweder direkt, oder vor einem Apache Webserver als Reverse Proxy vorgeschaltet), sparen Sie sich die  Apache-Direktiven und fügen Sie Ihrer Server-Konfigurationsdatei folgende Direktiven hinzu

ssl_stapling on;
ssl_stapling_verify on;

Verwenden Sie hingegen einen Apache Webserver an vorderster Front, stellen Sie sicher, dass das Modul socache_shmcb aktiviert ist, und konfigurieren Sie anschließend folgende Direktiven:

SSLStaplingCache shmcb:/tmp/stapling_cache(102400)
SSLUseStapling on
SSLStaplingReturnResponderErrors off

Starten Sie den Server neu. Sie sollten nun nach dem Neustart eine positive Antwort für das OCSP Stapling bekommen, wenn Sie den obigen Test wiederholen.

Content Encoding, Content Compression und Leverage Browser Caching

Wenn Sie Ihre Seite mit Google Page Speed testen, bekommen Sie häufig Fehlermeldungen bezüglich verschenkten Potentials in den Punkten Contend Encoding, Content Compression und Leverage Browser Caching. Die Kompression von Content führt einfach nur dazu, dass der Content komprimiert und somit von der Dateigrößer her reduziert wird. Dadurch reduziert sich die Datenmenge, die über das Netzwerk übertragen werden muss. Wenn Sie den Webserver dann noch für Browser Caching konfigurieren, erlaubt er es den Browsern wiederkehrender Besucher, Ressourcen in einem lokalen Cache vorzuhalten, bevor sie sie erneut vom Webserver abfragen müssen.

Diese Dinge werden wir nun konfigurieren. Allerdings müssen wir dazu erst einige Voraussetzungen abchecken. Läuft der Apache Webserver Ihrer Installation aktuell schon mit dem Modul mod_expires? Prüfen Sie dies über de Kommandozeile Ihres Webservers über.

apache2ctl -M | grep expires

oder suchen Sie das Modul über

find / -name mod_expires.so

sofern etwas zurückkommt wie “ expires_module (shared)“, erfüllen Sie diese Voraussetzung. Falls nicht, müssen Sie das Apache Modul vorher nachinstallieren. Wenn Sie eine Onyx Plesk Installation haben, geht das besonders einfach. Begeben Sie sich hierzu nach Tools u& Settings -> Web Server -> Apache Web Server

Onyx Plesk Apache2 mod_expires aktivieren

In der unteren Sektion der Folgeseite, akivieren Sie das Kontrollkästchen bei expires. Das Apache-Modul sollte nun aktiviert werden. Nun setzen wir die entsprechenden Webserver-Direktiven, die alles aktivieren, was wir brauchen. Unter Plesk begeben Sie sich dazu unter Ihrer Domain auf die Apache & nginx Einstellungen.

Onyx Plesk nginx als Reverse Proxy konfigurieren

unter „Additional Directives for HTTPS“ (sowie auch in der HTTP-Version), fügen Sie folgende direktiven für den Apache Webserver, wenn Sie nur den Apache Webserver (ohne nginx) verwenden ein.

<filesMatch ".(ico|pdf|flv|jpg|svg|jpeg|png|gif|js|css|swf|webp)$">
Header set Cache-Control "max-age=84600, public"
</filesMatch>

<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

etwas weiter unten unter Additional nginx directives fügen Sie folgende Direktiven für den nginx Reverse Proxy ein (wenn Sie nginx verwenden, müssen Sie die Direktiven für den Apache Webserver NICHT festlegen. Das ist besser für die Performance):

location ~* \.(js|css|png|jpg|svg|jpeg|gif|ico)$ {
expires 20d;
add_header Cache-Control „public, no-transform“;
}

gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_proxied any;
gzip_min_length 1000;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json application/javascript application/xml+rss image/svg+xml;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_vary on;
gzip_static on;

Mit folgender Linux-Kommandozeile können Sie prüfen, ob Ihr Webserver nun Content-Encoding: gzip zurück liefert:

 curl -I -H 'Accept-Encoding: gzip,deflate' https://www.example.org/

Sie sollten diesbezüglich ein Ergebnis zurückkriegen

Verhindern Sie Hotlinking

Hotlinking bezeichnet die Tätigkeit, in der andere Seitenbetreiber einfach direkt die URL zu Dateien auf Ihrem Webserver (meistens Bilder im Format .jpg, .jpeg, .gif oder .png, aber durchaus auch andere Dateien wie etwa .js-Skripte) in andere Seiten einbinden. Dadurch werden die Ressourcen dann von Ihrem Webserver heruntergeladen und der Fremde „klaut“ Ihnen sozusagen Ihre Bandbreite, weil er Content durch Ihren Webserver bereitstellt.

Um dies zu vermeiden, können Sie im Apache Webserver folgende Direktiven festlegen. Diese müssen GANZ oben in den Apache Webserver-Direktiven bzw. in der .htaccess-Datei stehen (nicht unten).

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?dafrk-blog\.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google\.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bing\.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo\.com(/)?.*$ [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg)$ - [NC,F]

Wenn Sie als Reverse Proxy den nginx verwenden, müssen Sie die oben stehenden Apache-Direktiven nicht angeben. Diese können Sie sich dann sparen. Stattdessen passen wir unsere nginx-Direktive, mit der wir zuvor das Browser Caching und die gzip-Kompression sowie das OCSP Stapling konfiguriert haben, noch etwas an. Diese lautet nun

location ~ .(js|css|png|jpg|svg|jpeg|gif|ico|ttf|woff|woff2|webp)$ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo. dafrk-blog.com *.dafrk-blog.com;
if ($invalid_referer) {
return 403;
}
expires 20d;
add_header Cache-Control "public, no-transform";
}
gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_proxied any;
gzip_min_length 1000;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json application/javascript application/xml+rss image/svg+xml;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_vary on;
gzip_static on;
ssl_stapling on;
ssl_stapling_verify on;

Mit diesen Direktiven komprimieren alle zuvor getätigten Optimierungen mit der Vermeidung von Backlinking. Sie können nun selbst testen, ob Backlinking auf die Inhalte Ihrer Webseite noch möglich ist. Dazu gibt es ein entsprechendes Tool  von altlab. Öffnen Sie die Seite und geben Sie eine direkte URL zu einem Bild auf Ihrer Website ein und drücken Sie auf „Check Link“. Das Bild sollte nicht angezeigt werden.

Onyx Plesk Backlinking verhindern nginx WordPress

Onyx Plesk Backlinking verhindern nginx WordPress

Wird das Bild trotzdem angezeigt, noch nicht verzagen. Öffnen Sie im Webbrowser die Entwicklerkonsole. Unter Google Chrome drücken Sie dazu die taste F12. Wechseln Sie auf den Reiter Netzwerk (1). Laden Sie die Seite erneut und finden Sie den Dateinamen des angezeigten Bildes (2). Evtl. wird angezegit, dass das Bild vom Memory bzw. vom Disk Cache geladen wird (3, im Screenshot andere Datei). Beheben Sie das Problem durch Rechtsklick -> Clear Browser Cache (5). Laden Sie die Seite nun erneut. Jetzt sollte es wirklich nicht mehr gehen. Im Sreenshot sehen Sie, dass der Dateiname bei mir rot und mit einem Return Code von 403 dargestellt wird, bei mir funktioniert der Schutz also.

Google Chrome Backlinking Protection nginx Reverse Proxy

Google Chrome Backlinking Protection nginx Reverse Proxy

Bilder optimieren

Einige Bilder, die auf Ihrer Webpräsenz gehostet sind, werden mitunter schon vom der Google Page Speed  Tool beanstandet, weil sie zu schlecht komprimiert bzw. zu groß sind. Doch auch wenn Sie von den Google Page Speed Insights keinerlei Hinweis bekommen, lohnt es sich für Sie, Ihre Bilder zu optimieren, um die Ladezeiten zu reduzieren.

Vorbereitungen

Bevor Sie jedoch eine solche Optimierung versuchen, sollten Sie unbedingt ein Backup aller Bilder auf Ihrem Webserver machen. Mitunter geht bei einer solchen Optimierung auch mal etwas schief, und da ist es immer gut, versichert zu sein. Wenn Sie beispielsweise einen WordPress-Blog betreiben und sicher sind, dass all Ihre Bilder nur als .jpeg, .png, .tiff und .gif vorliegen (und nicht beispielsweise als .webp), machen Sie über folgende drei Zeilen eine Backup aller Bilder nach /backup

Wechseln Sie zuerst in das wp-content/uploads-Verzeichnis

cd /var/www/vhosts/<domain>/httpdocs/wp-content/uploads

Kopieren Sie nun die Dateien

find . -type f -name '*.jpg' -exec cp {} {}.bak \;
find . -type f -name '*.gif' -exec cp {} {}.bak \;
find . -type f -name '*.tiff' -exec cp {} {}.bak \;
find . -type f -name '*.png' -exec cp {} {}.bakbak \;

Warum speichern wir .png-Dateien als .bakbak? Weil eines der Optimierungstools, welches wir nachher nutzen wollen, automatisch eine .bak-Datei anlegt. Wir wollen unsere Backup-Datei aber separat haben, ohne dass das Kommandozeilentool diese überschreibt.

Nachdem Sie nun ein Backup angelegt haben, müssen Sie sämtliche Caching-Technologien für den Zeitraum der Bildoptimierung auf Ihrem Server deaktivieren, dazu gehört beispielsweise

  • deaktivieren Sie die Auslieferung der Webseiteninhalte über Varnish (Tipp weiter unten)
  • Deaktivieren Sie sämtliche WordPress-Caching-Plugins wie etwa WP Super Cache (Tipp weiter unten) oder andere Caching-Technologienw ei memcached. PHP-seitige Caching-Mechanismen wie PHP-FPM, APC usw. können Sie hingegen getrost an lassen, diese haben mit der Bildauslieferung nichts zu tun.
  • Deaktivieren Sie Jetpack Photon, falls Sie es nutzen (unter Jetpack – Dashboard – Performance – Bilder-Performance)
  • Wenn Sie einen Reverse Proxy einsetzen, müssen Sie diesen nicht deaktivieren, der darf ruhig die Bilder einmalig vom dahinter liegenden Webserver abfragen und sie dann gecached ausliefern, das ist an dieser Stelle nicht schlimm. Auch die Caching-Einstellungen des Webservers, die Sie ein Kapitel weiter oben getätigt haben, können Sie aktiviert lassen. Dieses Caching können Sie nämlich beim Neu laden einfach umgehen indem Sie Strg+F5 auf der Tastatur drücken, wenn Sie die Seite neu laden.
Jetpack Photon Bilder Performance deaktivieren

Jetpack Photon Bilder Performance deaktivieren

Keine Sorge – Sie können sämtliche Caching-Technologien im Anschluss wieder aktivieren, jedoch wird es zwangsläufig zu Verwirrungen und Fehlern kommen, wenn Sie das Caching während der Optimierung aktiviert lassen.

Kommandozeilengesteuerte Bildoptimierung für die Suchmaschinenoptimierung

Als ersten Schritt unserer Bildoptimierung werden wir auf Kommandozeilenebene einige Tools einsetzen. Diese müssen im Zweifel vorher installiert werden. Im Folgenden schildern wir die Schritte für einen Debian- bzw. Ubuntu-Server. In der Praxis ändert sich nur das eingesetzte Softwarepaketierungstool (z. B. yum oder zypper statt apt-get).

apt-get install jpegoptim
apt-getinstall optipng

Nun führen Sie die Optimierungen durch mit Hilfe von

find . -type f -name „*.jpg“ -exec jpegtran -copy none -optimize -perfect {}.bak > {} \;
find . -type f -name „*.jpg“ -exec jpegoptim -m70 –strip-all {} \;
find . -type f -name „*.jpeg“ -exec jpegtran -copy none -optimize -perfect {}.bak > {} \;
find . -type f -name „*.jpeg“ -exec jpegoptim -m70 –strip-all {} \;
find . -type f -name „*.png“ -exec optipng -o7 {} \;

Nach der Optimierung sollten Sie die Dateisystemberechtigungen auf den Webserver-Benutzer setzen (beispielsweise www-data).

chown -R . www-data.www-data

Bilder komprimieren und optimieren mit Hilfe von WordPress Addons

Nach der kommandozeilengesteuerten Optimierung unserer Bilder verwenden wir nun einige WordPress-Plugins, um unsere Bilder noch etwas schmaler zu machen. Grundsätzlich sollten Sie immer zusätzlich zur Plugin-gestützten Optimierung hin und wieder auch eine kommandozeilengestützte Optimierung hinzufügen. Denn die Kommandozeilentools jpegoptim und optipng sind in vielen Bereichen effizienter.

Jedoch sind Plugins eine wunderbare Möglichkeit, in Zukunft automatisch Bilder sofort nach dem Hochladen zu optimieren – und eine Möglichkeit, die Größe der Bilder zu begrenzen. Häufig brauchen Sie nämlich die Bilder nicht in Ihrer Originalgröße. Hier gibt es beispielsweise eine Auflistung der gängigen Bildschirmauflösungen verschiedener Geräte. Solange Sie die Bilder also nicht aus Qualitätsgründen Ihren Besuchern in Vollbild anbieten wollen, kann man ziemlich sicher sagen, dass Sie Ihre Bilder nie mit einer Breite oder Höhe von mehr als 2500 px anbieten werden. Daher sollten Sie überlegen, die Bilder von Ihrer Originalgröße auf eine maximale Höhe bzw. Breite von 2500 Pixel herunterzuskalieren.

Die von mir vorgestellten WordPress-Plugins eignen sich perfekt dazu. Sie sind dazu in der Lage, in der Vergangenheit optimierte Bilder automatisch herunter zu skalieren, und führen diesen Prozess automatisch für künftig hochgeladene Bilder durch. Im Beispiel unten zeige ich Ihnen den Prozess mit dem Plugin WP Smush.

An dieser Stelle gleich der Hinweis, dass Sie nie mehr als eines dieser Bildoptimierungs-Plugins gleichzeitig aktiviert haben sollten. Es ist durchaus möglich, verschiedene Plugins auszuprobieren, indem man eines deaktiviert und dann nebenbei ein anderes im Einsatz hat. Jedoch sollten nie beide gleichzeitig auf Ihrem System aktiv sein.

Skalierung mit Kommandozeilentools

Neben er Möglichkeit, Bilder mit Hilfe von WordPress Plugins zu skalieren (was ich im nächsten Abschnitt zeigen werde), können Sie Ihre Bilder auch mit weiteren Kommandozeilentools skalieren. Dazu installieren wir zuerst das Tool imagemagick

apt-get install imagemagick
apt-get install plesk-php71-imagick

und können dann die Bilder skalieren, indem wir die maximale Breite oder Höhe eingeben (das Seitenverhältnis wird beibehalten)

convert internet-of-things.jpeg -resize 2048×2048\> internet-of-things.jpeg

oder durch Angabe eines Prozentsatzes

convert example.png -resize 80% example.png

In unserem Fall würden wir also alle Bilder auf eine maximale Größe von 2500 Pixel skalieren über

find . -type f -name „*.jpg“ -exec convert {} -resize 2500×2500\> {} \;
find . -type f -name „*.jpeg“ -exec convert {} -resize 2500×2500\> {} \;
find . -type f -name „*.png“ -exec convert {} -resize 2500×2500\> {} \;

Wichtig: Auch hier im Nachgang wieder die Dateisytemberechtigungen auf den Webserver-Benutzer setzen

chown -R . www-data.www-data

Bilderoptimierung mit WP Smush

Nachdem Sie WP Smush installiert haben, konfigurieren Sie als erstes den Kompressionsgrad sowie die maximale Größe Ihrer Bilder. Ich empfehle Ihnen hierzu folgende Einstellungen. Dabei stellen wir auch eine maximale Bildgröße von 2500 Pixel ein.

WP Smush maximale Bildgröße setzen

WP Smush maximale Bildgröße setzen

Des Weiteren wollen wir, dass bei jedem hochgeladenen Bild automatisch eine Optimierung statt findet und das Bild in verschiedenen Größen gespeichert wird.

WP Smush konfigurieren - Bilderoptimierung WordPress zur Suchmaschinenoptimierung

WP Smush konfigurieren – Bilderoptimierung WordPress zur Suchmaschinenoptimierung

Zu guter letzt wollen wir keine EXIF-Daten behalten. EXIF-Daten sind Zusatzinformationen wie beispielsweise das Datum und die GPS-Koordinaten, an denen das Bild angefertigt wurden. Diese brauchen unsere Besucher nicht zu wissen.

WP Smush Exif Bilddateien entfernen

WP Smush Exif Bilddateien entfernen

Von nun an werden Bilder, die Sie in Zukunft hochladen, automatisch optimiert. Um in der Vergangenheit hochgeladene Bilder zu optimieren, können Sie das Bulk Smush Feature verwenden. In der kostenlosen Version können Sie jedoch nur 50 Bilder pro Klick optimieren. Danach müssen Sie den Button erneut klicken, um weitere 50 Bilder zu optimieren.

WP WordPress Smush Bulk Smush Bildoptimierung Google Page Speed

WP WordPress Smush Bulk Smush Bildoptimierung Google Page Speed

Bilderoptimierung mit dem Ewww Image Optimizer

Nachdem Sie den Ewww Image Optimizer installiert haben, fällt Ihnen unter Einstellungen -> Ewww image Optimizer gleich auf, dass dem Tool noch eine Bibliothek fehlt, nämlich gmagick. Sofern auch noch jegoptim und optipng fehlen, habe ich Ihnen weiter oben gezeigt, wie Sie die entsprechenden Tools nachinstallieren.

Damit der Ewww Image Optimizer nun auch auf gmagick zugreifen kann, loggen Sie sich auf Kommandozeilenebene als root auf dem Server ein und installieren die Bibliothek folgendermaßen unter einer Onyx Plesk Installation mit Debian bzw. Ubuntu (Versionsnummern können abweichen)

apt-get install graphicsmagick libgraphicsmagick1-dev graphicsmagick-imagemagick-compat
apt-get install plesk-php71-dev plesk-php71-pear
cd /opt/plesk/php/7.1/bin
./pecl install gmagick-2.0.4RC1

Nachdem dies getan ist, müssen Sie noch in Ihrer php.ini das PHP-modul aktivieren. Unter Plesk machen Sie dies am besten über Tools & Settings -> General Settings -> PHP Settings

Gmagick für Ewww Image Optimizer installieren WordPress

Dort wählen Sie die PHP-Laufzeitumgebung aus, für die Sie das PHP-Modul aktivieren wollen. Da wir weiter oben PHP7-FPM aktiviert haben, werden wir auch für genau diese Implementierung das Modul aktivieren.

Onyx Plesk PHP7-FPM gmagick installieren

Nun gehen Sie auf den Reiter php.ini und fügen Die notwendige Zeile hinzu, um das gmagick Plugin zu aktivieren.

Gmagick PHP Plugin unter Onyx Plesk installieren

Wenn Sie nun die Plugin-Einstellungen prüfen, sollte Ewww das gmagick-Modul erkennen.

Wordpress Ewww Image Optimizer Gmagick

Konfigurieren des Ewww Image Optimizer

Im Folgenden setzen wir die Einstellungen für die kostenlose Version des Tools.

Ewww Image Optimizer was kann die kostenlose Version

Ewww Image Optimizer was kann die kostenlose Version

In den erweiterten Einstellungen stellen wir ein, dass wir einen JPG-Qualitätswert von 70 wollen (Standard ist 82) und dass wir unsere Mediahtek überprüfen wollen, während wir optimieren. Die Parallele Optimierung macht hingegen nur Sinn, wenn ständig neue Bilder hinzu kommen, etwa wenn Ihr BBPress oder ein anderes Social Media Plugin installiert habt.

Ewww Image Optimizer Erweiterte Einstellungen

In den Skalierungseinstellungen aktivieren wir die automatische Skalierung der Bilder auf eine maximale Größe von 2500 Pixeln, wir wollen als eingelogger Administrator auf Bilder mit Skalierungspotential hingeiesen werden und wir wollen auch bestehende Bilder in der Mediathek optimieren.

Ewww Image Optimizer Bilder Skalierungs Einstellungen

Ewww Image Optimizer Bilder Skalierungs Einstellungen

Damit sind wir mit der Basiskonfiguration des Ewww Image Opzimier fertig.

Bilder im webp Format ausliefern

WebP ist ein von Google entwickeltes Format für Bilder. Es unterstützt transparente Hintergründe und Animationen ähnlich dem .gif-Format und glänzt dabei durch eine exzellente Kompression. WebP wird dabei von Google als Nachfolger für das JPEG- und PNG-Bildformat angepriesen. Leider wird das Format aktuell nur von den Browsern Google Chrome, Opera sowie von Android Geräten unterstützt. Benutzer dieser Technologien bekommen die Bilder aber wesentlich schneller ausgeliefert als im klassichen .jpeg- und .png-Format

Der Vorteil bei der ganzen Sache: Sie müssen nicht, wie Sie jetzt vielleicht denken, all Ihre Bilder in einem Bildbearbeitungstool öffnen, in .webp umwandeln und dann neu als .webp-Datei in Ihre Seiten einbinden – wie unpraktisch wäre das denn? Stattdessen funktioniert die Umwandlung bestehender JPEG- und PNG-Dateien on the fly. Das bedeutet: Sie lassen Ihre .jpeg- und .png-Dateien, wie sie sind, und der Webbrowser schreibt diese on-the-fly über die CPU bzw. den Prozessor on the fly in das webp-Format um. Dadurch haben Sie keine Probleme damit, die anderen Browser (IE, Edge, Safari und Firefox) mit JPEGs und PNGs zu füttern, und können gleichzeitig Chrome, Opera und Android-Gerätebrowser mit .webp füttern.

Ein wesentlicher Nebeneffekt bei der ganzen Sache: Die Google Page Speed Insights scannen Ihre Webseite mit der Chrome Browserengine. Das bedeutet: Wenn Sie die Auslieferung Ihrer Bilder im WebP-Format anbieten, profitieren Sie damit bei der Google Page Speed Bewertung Ihrer Website, da die Page Speed Insights dieses Format ausgeliefert bekommen. Sie werden wesentliche Vorteile in der Bewertung Ihres Webauftritts bemerken.

Verschiedene Ansätze beim Umschreiben von JPEG und PNG in WebP

Um Ihre JPEG- und PNG-Bilder im WebP-Format auszuliefern, gibt es verschiedene technologische Ansätze. Der einfachste Ansatz ist der, ein Content Delivery Network (CDN) wie beispielsweise MaxCDN oder CloudFlare zu nutzen. Den Umstieg auf ein CDN werden wir weiter unten in einer andern Sektion besprechen. Diese unterstützen die on-the-fly-Umwandlung direkt. Jedoch ist es durchaus verständlich, wenn Sie den Aufwand oder auch unter Umständen den finanziellen Invest in ein CDN scheuen.

WebP-Auslieferung über das Caching Plugin „Cache Enabler“

Die zweite Möglichkeit ist die Auslieferung der Bilder über das WordPress-Plugin „Cache Enabler“. In Verbindung mit dem WordPress-Plugin Optimus bekommen Sie hier ein gutes WordPress Caching Plugin, welches in Benchmarks immer wieder gut abschneidet. Das Caching Plugin kümmert sich in diesem Fall darum, dass für Opera/Chrome/Android-Browser eine Version Ihrer Seite mit .webp-Bildern gespeichert wird. Diese wird dann an die entsprechenden Browser ausgeliefert. In unserem Tutorial werden wir jedoch das Cache Enabler Plugin nicht ansprechen, weil ich mich persönlich für das Plugin „WP Super Cache“ entschieden habe, da dieses im Schnitt bei verschiedenen Benchmarks am besten abgeschnitten hat. Da man bekanntlich nicht mehrere Caching-Plugins miteinander kombinieren sollte, fällt dieses Plugin bei mir weg.

WebP-Auslieferung über den Ewww Image Optimizer

Wernn Sie anstelle des Bildoptimierungs-Plugins WP Smush den Ewww Image Optimizer verwenden, kann sich das Tool für Sie um die Auslieferung von WebP-Bildern kümmern. Das Plugin konnte mich persönlich in den anderen Belangen nicht überzeugen. In der Praxis komprimiert WP Smush wesentlich besser als der Ewww Image Optimizer, und die automatisierte Komprimierung von Bildern beim Upload kostet beim Ewww Image Optimizer Geld, während ich Sie bei WP Smush umsonst bekomme, solange das Bild nicht eine bestimmte Dateigröße überschreitet. Zwar sind die Preise jetzt nicht wirklich teurer, aber an dieser Stelle war ich eben knauserig und habe dann doch lieber auf WP Smush gesetzt. Zwar gibt es auch von WP Smush eine kostenpflichtige Version, diese brauche ich jedoch bis heute schlicht und einfach nicht.

Ewww Image Optimizer WebP Bilder

Ewww Image Optimizer WebP Bilder

Speichern Sie die Änderungen. Auf der Startseite sehen Sie nun eine Box mit Webserver-Direktiven, die Sie umsetzen müssen. Es mepfiehlt sich, diese Direktiven in eine .htaccess-Datei im Hauptvzereichnis Ihrer WordPress-Installation einzufügen. Die hierzu notwendigen Direktiven können Sie vom Plugin direkt einfügen lassen. Klicken Sie hierzu auf den Button „Setze Rewrite-Regeln ein“.

Ewww Image Optimizer webp Rewrite

Ewww Image Optimizer webp Rewrite

Nachdem Sie unten eine Bestätigung bekommen „Einfügen erfolgreich“, laden Sie die Seite neu.  Die Seite sollte nun statt dem Wort „PNG“ mit rotem Hintergrund das Wort „WEBP“ in grünem Hintergrund zeigen. Falls nicht, fehlen Ihnen mitunter die Apache Module mod_headers und/oder mod_rewrite (unwahrscheinlich) oder Sie haben einen Reverse Proxy vorgeschaltet, der keine Apache Direktiven versteht, beispielsweise nginx. Die entsprechenden Direktiven, die Sie hierzu unter nginx einfügen müssen, finden Sie weiter unten.

Falls auch die nginx-Direktiven bei Ihnen nicht greifen (der Ewww Image Optimizer zeigt Ihnen auch nach Anpassung der nginx-Konfiguration immer noch ein rotes PNG-Kästchen statt einem grünen WebP-Kästchen an), dann nehmen Sie die Direktiven wieder aus der Webserver-Konfiguration raus und setzen Sie stattdessen die folgenden Haken. Diese Einstellungen haben den Nachteil, dass für jedes JPEG- bzw. PNG-Bild auf Ihrer Seite zusätzlich eine .WebP-Datei auf Ihrem Webverzeichnis erzeugt wird. Das heißt im Endeffekt, Sie verbrauchen mehr Speicherplatz. Dafür funktioniert diese Methodik meistens todsicher.

Alternatives WebP Rewriting Ewww Image Optimizer WordPress

Alternatives WebP Rewriting Ewww Image Optimizer WordPress

Die Auslieferung von WebP-Bildern über Ewww Image Optimizer sollten Sie nur aktivieren, wenn Sie die Auslieferung nicht schon über eine andere Technologie (Caching-Plugin, Webserver-Umschreiberegeln oder ein CDN) realisiert haben.

WebP-Auslieferung über Webserver-Umschreiberegeln

Die vierte Möglichkeit zur Live-Umwandlung von JPEG und PNG in das WebP-Format sind Browser RewriteRules. Diese Regeln sorgen dafür, dass HTTP-Anfragen für eine .jpeg- oder .png-Datei on-the-fly in eine Anfrage für eine .webp-Datei umgeleitet werden. Diese Technik sollten Sie ausschließlich verwenden, wenn Sie weder ein Caching Plugin wie Cache Enabler, noch ein Bildoptimierungs-Plugin wie den Ewww Image Optimizer verwenden, der diese Arbeit für Sie schon erledigt. Nutzen Sie eines dieser Plugins, nehmen Sie die hier geschilderten Direktiven auf jeden Fall wieder aus Ihrer Webbrowser Konfiguration. Ebenso sollten Sie diese Direktiven entfernen, wenn bereits ein Content Delivery Network (CDN) die Auslieferung von .webp-Dateien für Sie übernimmt.

Sind diese Voraussetzungen geschaffen, konfigurieren Sie unter dem Apache Webserver bzw. in einer .htaccess-Datei folgende Direktiven relativ weit oben in Ihrer Konfiguration:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_ACCEPT} image/webp
    RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
    RewriteRule ^(path/to/your/images.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>

<IfModule mod_headers.c>
    Header append Vary Accept env=REDIRECT_accept
</IfModule>

AddType image/webp .webp

Unter nginx konfigurieren Sie folgende Direktiven

location ~ (^/wp-content/.+)\.(jpe?g|png)$ { if ( $http_accept ~* webp ) { set $webp "A"; } if ( $request_filename ~ (.+)\.(png|jpe?g)$ ) { set $file_without_ext $1; } if ( -f $file_without_ext.webp ) { set $webp "${webp}E"; } if ( $webp = AE ) { add_header Vary Accept; rewrite ^(.+)\.(png|jpe?g)$ $1.webp break; } }

Zusätzlich müssen Sie in der Datei mimes.types im nginx-Verzeichnis folgenden Eintrag vornehmen

image/webp webp;

Unter Plesk geht dies ganz einfach unter den Apache & nginx Settings

Onyx Plesk Custom Mime Type for WebP nginx

Onyx Plesk Custom Mime Type für WebP nginx. Es fehlt das p im Screenshot

WebP-Auslieferung über das PageSpeed-Modul des Webservers

Für die Webserver Apache und nginx lässt sich ein Servermodul namens pagespeed installieren. Dieses Modul kümmert sich dann selbständig um die on-the-fly-Konvertierung von Bildern in das webp-Format. An dieser Stelle werde ich nicht zeigen, wie Sie das Modul auf dem Apache Webserver bzw. dem nginx Webserver installieren, da Sie ihn hierfür häufig neu kompilieren müssen. In Zukunft wird es von mir einen Beitrag darüber geben, wie Sie einen neuen nginx-Webserver kompilieren, der TLSv1.3-Verschlüsselungs-Cipher, die Google Brotli-Komprimierung und das PageSpeed-Moudl unterstützt.

JavaScript und CSS-Dateien inline setzen und minimieren mit Fast Velocity Minify

Wenn Sie JavaScript und CSS-Dateien inline setzen, kriegen Sie die Warnmeldungen bezüglich der Reduzierung von JavaScript und CSS und bezüglich der „Above the Fold“ Integration von JavaScript und CSS weg. Eine Möglichkeit, dies umzusetzen, ist das Plugin Fast Velocity Minify. Dort tätigen Sie die folgenden Einstellungen

Google Fonts CSS Inline setzen WordPress

Ich persönlich habe an dieser Stelle auch gute Erfahrungen damit gemacht, die Google Fonts komplett raus zu nehmen (Kontrollkästchen darunter). Das kommt allerdings natürlich nur in Frage, wenn Sie nicht bewusst im Frontend auf Google Fonts setzen, sondern wen diese nur unbewusst von einem Plugin oder im Backend eingesetzt werden.

Inline Header und Footer CSS Files unter WordPress

Die Einstellungen im Reiter „Pro“ bieten hier mehr Möglichkeiten. So kann bei diesem Plugin etwa individuell festgelegt werden, welcher CSS- und /oder JavaScript-Code denn jetzt genau inline gesetzt werden soll. Das sollten Sie machen, wenn Sie merken, dass nach der Konfiguration dieses Plugins Ihre Website beim Neu laden kurz „flackert“, weil die Stylesheets erst geladen werden müssen. Es gibt sowohl Plugins als auch manuelle Methoden, um das kritische CSS herauszufinden.

Überprüfen Sie nach der Konfiguration von FVM die Konsole Ihres Webbrowsers. über die Entwickler-Konsole Ihres Browsers. Bekommen Sie beim Laden der Seite Fehlermeldungen über nicht gefundene .js-Dateien? Der Screenshot zeigt, wie es aussehen würde.

JavaScript Request Failed with status 404 fvm/out

Dann habe ich eine gute und eine schlechte Nachricht für Sie

  • Ihre WordPress-Seite ist gut gegen Angriffe abgesichert, weil die Ausführung von Skript-Dateien innerhalb des wp-content-Ordners vom Administrator deaktiviert worden ist.
  • Sie müssen Fast Velocity Minify umkonfigurieren, so dass die entsprechenden Skripte nun aus einem anderen Ordner geladen werden.

Erstellen Sie hierzu zunächst in Ihrem htdocs-Verzeichnis einen neuen Ordner und geben Sie diesem Ausführungsrechte 755. Konfigurieren Sie danach im Reiter Pro der Fast Velocity Minify Einstellungen den Cache Pfad und die Cache Base URL um.

Nach dieser Konfigurationsänderung sollten sich die Fehler schon einmal reduziert haben. Sie sollten nur noch eine Meldung bekommen, dass einzelne Skripte nicht mehr geladen werden konnten.

Wordpress FVM Fast Velocity Minify Laden fehlgeschlagen für das Skript mit der Quelle fvm/out

haben Sie häufig in der Konfiguration der Base URL noch etwas falsch gemacht, haben Sie beispielsweise in die URL den httpdocs-Ordner mit reingeschmuggelt, also statt https://ihredomain.com/fast-velocity/ die URL https://ihredomain.com/httpdocs/fast-velocity rein geschmuggelt, weil dieser Ordner im Base Path mit drin ist? Auf jeden Fall hat dieser Fehler damit zu tun, dass der Webbrowser die Ressource auf dem Webserver nicht findet. Entweder ist die Datei unter dieser URL nicht vorhanden, oder die Dateiberechtigungen stimmen nicht.

Falls Sie danach noch Fehler bekommen wie diese hier

Wordpress laden fehlgeschlagen Skript Pagespeed

Dann liegt das daran, dass etwas mit dem Pagespeed-Modul Ihres Webservers nicht stimmt. Sie werden nämlich feststellen, dass diese Datei auf Dateisystemebene gar nicht existiert. das liegt daran, dass der Webserver durch das Pagespeed-Modul eine Version dieser Datei on-the-fly herstellen möchte. Dieser fehler tritt typischerweise auf, wenn das pagespeed-Modul auf dem Webserver im Backend implementiert ist, aber nicht auf dem Reverse Proxy, der vor dem Webserver vorgeschaltet ist. Sie sollten das pagespeed-Modul auf dem Apache deaktivieren und auf dem reverse Proxy (beispielsweise nginx) aktivieren, dann sollte es gehen.

Render Blocking JavaScript und CSS

Jedes mal, wenn ein Webbrowser auf ein <script>-Tag stößt, hört er damit auf, den restlichen HTML Code zu interpretieren, und  lädt stattdessen das dahinter stehende JavaScript. Das hat grundsätzlich seinen Sinn, weil einige Webseiten darauf angewiesen sind, dass bestimmte JavaScript-Funktionen zur Verfügung stehen, bevor sie letztendlich dargestellt werden. Sonst kommt es zu unschönen Darstellungsfehlern. Grundsätzlich sollten JavaScripts allerdings heutzutage so geschrieben sein, dass sie zuerst darauf warten, dass der gesamte DOM-Baum, also die geasmte HTML-Seite, geladen ist, bevor sie anfangen zu arbeiten. Aus diesem Grund sollte es grundsätzlich möglich sein, JavaScript-Dateien asynchron zu laden. Asynchron heißt: Der Webbrowser interpretiert die gesamte HTML-Seite, und das JavaScript wird unabhängig davon im Hintergrund geladen. Wenn es fertig ist, ist es fertig.

Um Warnungen über das „Render Blocking JavaScript“ weg zu bekommen, empfiehlt es sich, die JavaScript-Dateien asynchron zu laden. Grundsätzlich stehen Ihnen hierfür zwei Modi zur Auswahl:  Async und Defer. Während das Addon Fast Velocity Minify im Reiter Settings nur Defer anbietet (was aber OK ist, da ich mit diesem Modus die besten Erfahrungen gemacht habe)

Wordpress Page Speed Insights Render Blocking JavaScript weg bekommen mit Fast Velocity Minify

WordPress Page Speed Insights Render Blocking JavaScript weg bekommen mit Fast Velocity Minify

Bietet ein anderes Plugin namens „Async JavaScript“ auch den Async-Modus an. Ich persönlich habe jedoch mit dem Defer-Modus gute Erfharungen gemacht. Hinweis: Auf keinen Fall sollten Sie mehrere Plugins zum asynchronen Laden von JavaScript miteinander kombinieren. Kombinieren Sie also beispielsweise nicht Fast Velocity Minify mit Async JavaScript, sondern legen Sie die Einstellungen in einem Modul zentral fest. Ansonsten kann es sein, dass Sie Probleme mit jQuery bekommen werden. Das liegt einfach daran, dass sich die Plugins gegenseitig beim Bevorzugen von jQuery in die Quere kommen.

Async JavaScript jQuery is not defined WordPress

Eine weitere sinnvolle Einstellung in Fast Velocity Minify ist das Erzwingen von HTTPS-URLs, sofern Sie diese bereits auf Webserverebene erzwingen und auf HTTPS umgestellt haben.

Fast Velocity Minify WordPress Force HTTPS URLs

Wenn auf Ihrer Seite außerdem ein grafischer Frontend-Editor installiert ist, wie beispielsweise das Divi-Plugin, sollten Sie des Weiteren folgende Option aktivieren.

Wordpress Fast Velocity Minify Probleme mit Divi

Selbst nach all diesen Optimierungen bekam ich mit meiner WordPress-Instanz immer noch eine Fehlermeldung wegen einer Google Fonts-Einbindung der Schriftart Open Sans.

Wordpress Google PageSpeed Render Blocking CSS Google Fonts Open Sans

Eine Recherche auf Dateisystemebene mit grep enthüllt, dass dieses Skript von der Datei wp-inclues.php eingebunden wird.

Wordpress script-loader.php Open Sans Page Speed

Als ich diese böse Zeile aus der script-loader.php auskommentiere, bekomme ich mit, dass WordPress das Problem auch schon erkannt hat und im Kern Open Sans nicht mehr verwendet. Die Zeile bleibt jedoch drin, weil evtl. einige Themes von der Schriftart abhängig sind. Sofern Ihr Theme Open Sans nicht verwendet, können Sie die Zeile also getrost auskommentieren.

Wordpress Open Sans wird nicht mehr verwendet

Optimieren der Datenbank mit WP-Optimize oder WP-Sweep

WP-Optimize und WP-Sweep sind Plguins, welche Sie dazu nutzen können, um den Datenmüll in Ihrer WordPress-Datenbank aufzuräumen. Das Tool entledigt sich beispielsweise der ganzen Revisionen, die Sie mitunter nicht mehr brauchen. Vorsicht jedoch: WordPress-Revisionen sind grundsätzlich etwas gutes – sie ermöglichen es Ihnen, auf vergangene Version einer Seite oder eines Beitrages zurück zu springen. Sie sollten den Schritt also nur dan wagen, wenn Sie sicher sind, nach aktuellem Stand die Revisionen nicht mehr zu benötigen. Selbstverständlich werden nach der Optimierung wieder neue Revisionen angelegt. Wenn Sie dies nicht wollen, können Sie auch das Anlegen von Revisionen von vornherein deaktivieren.

Das Tool entfernt außerdem sämtliche Dinge in Papierkörben (Kommentare, Seiten, Posts usw.). Auch hier kann es grundsätzlich zu einem „ups“-Moment kommen, wenn Ihnen einfällt, dass da noch ein wichtiger Eintrag gesteckt hat. Deshalb empfehle ich Ihnen grundsätzlich, vor jeder WP-Optimize-Sitzung ein Datenbank-Backup durchzuführen, welches Sie sich auf an externer Stelle (also nicht auf dem Server selber) speichern.

Sie sollten WP-Sweep bzw. WP-Optimize nur nutzen, wenn Sie aktuell nicht an einem Entwurf arbeiten. Das beduetet, alle Seiten und alle Beiträge Ihrer WordPress-Instanz haben den Status „Veröff

entlicht“. Denn diese Tools entledigen sich auch den Entwürfen, wenn Sie einen kompletten Optimizerungslauf anstoßen.

Nach der Installation von WP-Sweep (welches ich gegenüber WP-Optimize bevorzuge) können Sie nach der Aktivierung des Plugins über  den Menüpunkt Werkzeuge -> Bereinigen bzw. Tools -> Sweep und anschließender Auswahl des Optimierungslaufs anstoßen.

Mit WP-Sweep optimieren Sie Ihre WordPress-Datenbank

Mit WP-Sweep optimieren Sie Ihre WordPress-Datenbank

Langsame DNS-Auflösung identifizieren

Manchmal haben Sie auch dehalb eine lange Antwortzeit auf Ihrer WordPress-Seite, weil die Zeit zur Auflösung des FQDN Ihrer WordPress-Seite zu lange dauert. Sie können die Dauer der DNS-Auflösung auf der Linux-Kommandozeile messen, indem Sie folgenden Befehl absetzen (hierzu sollte ihr DNS-Cache geleert sein).

time nslookup andreas-loibl.eu

aber auch mit einem externen Webtool (wenn Sie beispielsweise keine Linux-Umgebung zur Hand haben oder den DNS Cache von Ihrem PC oder dem Router nicht löschen wollen)

nslookup dns response time messen

Lahme Querys rausfinden

Der WordPress-Kern, aber auch das von euch eingesetzte Theme sowie alle installierten Plugins laden Ressourcen wie beispielsweise Javascript- und CSS-Dateien und setzen Datenbank-Abfragen ab. Diverse Plugins wie etwa „Query Monitor“ ermöglichen es euch als eingeloggter Administrator, langsame Querys zu identifizieren. Das Beispiel aus meinem Screenshot zeigt beispielsweise, dass mein WordPress sehr lange braucht (eine halbe Sekunde), um die verfügbaren Optionen aus der tbaelle wp_options zu laden.

Wordpress Query Monitor autoload Options braucht sehr lange

Welche Optionen (und damit auch: welche Plugins) hierbei die meiste datenmenge erzeugen, könnt ihr euch mit folgendem Statement anzeigen lassen.

SELECT LENGTH(option_value),option_name FROM wp_options WHERE autoload=‚yes‘ ORDER BY length(option_value) DESC LIMIT 20;

Mit dieser Abfrage seht ihr dann, welcher Eintrag wie viele Daten enthält.

Eine Lösung, dies in den Griff zu bekommen, kann sein, einen Index auf die Tabelle zu erstellen.

ALTER TABLE wp_options ADD INDEX (`autoload`);

andererseits können jedoch auch evtl. einige Plugins deinstalliert werden. Deinstallieren heißt an dieser Stelle: Das Plugin nicht nur deaktivieren, sondern auch löschen. Erst beim Löschen werden viele Datenbank-Einträge des Plugins gelöscht. Und selbst nach der Löschung kann es sein, dass noch einige Datensätze des Plugins in der Datenbank erhalten bleiben. Diese müssten dann manuell gelöscht werden.

Lahme Plugins rausfinden

So schön die Plugin-Funktionalität von WordPress auch ist: Sie kann auch zum Performance-Killer werden. Nämlich dann, wenn Sie entweder schlicht und einfach zu viele Plugins am Start haben oder wenn einzelne schlecht programmiert sind. Um rauszufinden, welche Plugins Ihre WordPress-Seite stark verlangsamen, nutzen wir Pagespeed-Webtools wie  Pingdom, GTmetrix, Uptrends, oder WebPageTest.

Um hier wirklich einen möglichst aussagekräfitgne Referenzwert zu bekommen, sollten Sie sämtliches Caching auf Ihrer Seite deaktivieren, darunter:

  • Caching Proxys wie Varnish oder Redis
  • Das Caching des Reverse Proxys, häufig nginx. Unter Plesk können Sie hierzu unter den Apache & nginx-Settings der jeweiligen einfach die entsprechende Option deaktivieren

    Onyx Plesk nginx Caching Option

    Onyx Plesk nginx Caching Option

  • WordPress Caching Plugins wie WP Super Cache

Wenn Sie all diese Caching Technologien deaktiviert haben, bekommen Sie ein möglichst realistisches Ergebnis. Führen Sie nun mit einem der oben angesprochenen Tools eine Messung Ihrer Seite mit allen aktivierten Plugins durch. Der Folgetest ist nun relativ einfach. Deaktivieren Sie im Wechsel immer nur eines der Plugins und schauen Sie, wie sich ies auf das Messergebnis auswirkt.

Am Ende haben Sie dann eine Übersicht mit dem jeweiligen Einfluss der einzelnen Plugins auf die Ladezeit Ihrer Website. Sie können nun selbst entscheiden, ob die Funktionalität eines bestimmten Plugins die zusätzliche Ladezeit wert ist, die dieses verursacht.

CSS Delivery verbessern und CSS reduzieren

Page Speed Hinweise in Verbindung mit der CSS Delivery bekommen Sie ebenfalls mit Plugins-Unterstützung ganz einfach weg. Das Plugin „Speed Up – Optimize CSS Delivery“ funktioniert ganz ohne Konfigurationsmenü und erledigte in meinem Test bereits einen sehr guten Job.

Trotz der inline-Integration von CSS durch Fast Velocity Minify hatte ich im Nachgang immer noch Probleme durch eine .css-Datei von Gravatar, nämlich die hovercard.css.

Gravatar hovercard.css Google Page Speed Insights CSS reduzieren

Gravatar hovercard.css Google Page Speed Insights CSS reduzierenGravatar hovercard.css Google Page Speed Insights CSS reduzieren

Hier blieb mir schlicht und einfach nichts anderes üblich, als Gravatar Hoercards unter Einstellungen -> Diskussion zu deaktivieren, bis das CSS den Google Best Practices folgt.

Gravatar Disable Hovercards for Google Page Speed

 

Ein WordPress Caching Plugin verwenden

Bei den WordPress Caching Plugins tut sich sehr viel. Es gibt quasi jeden Monat einen neuen Benchmark, der zeigen soll, welches Caching-Plugin für WordPress das Bessere ist. Ich für meinen Teil musste fest stellen, dass über die Bank hinweg das Plugin „WP Super Cache“ ein Dauerbrenner war. Daher empfehle ich allen Nutzern aktuell dieses Plugin als Erstes.

Damit WP Super Cache sauber funktioniert, müsst ihr eure WordPress-Seite auf Permalinks umgestellt haben. Standardmäßig cached WP Super Cache nämlich keine Seiten mit GET-Parametern in der URL. Deshalb solltet Ihr Permalinks und somit fixe URL Snippets verwenden, wenn Ihr eure Artikel-Seiten cachen wollt.

Expert Caching aktivieren

Gehen Sie auf den Reiter Advanced und aktivieren Sie das Expert Caching

WP Super Cache Expert Caching aktivieren

Alle anderen Einstellungen habe ich auf Standard gelassen, außer eine. Ich habe die Einstellung  Coarse file locking. You do not need this as it will slow down your website deaktiviert.

WP Super Cache Rewrite Rules schreiben.

Nach der Aktivierung des Advanced Modus sagt es Ihnen das Plugin schon selbst: In Ihrer .htaccess-Datei oder auch direkt in den Konfigurationsdateien Ihres Webservers müssen entsprechende Rewrite Rules als Direktiven hinterlegt sein.

.

WP Super Cache mod rewrite rules setzen Expert Mode

diese Einstellung können Sie weiter unten ganz einfach über die Betätigung eines Buttons setzen lassen. Aktivieren Sie den Reiter „Erweitert“, scrollen Sie dazu nach unten zur Sektion Mod Rewrite Rules. Klicken Sie dort auf den Button Mod Rewrite Rules aktualisieren.

WP Super Cache Expert Mode mod_rewrite Regeln setzen

Preloading Ihrer Seite

Zu guter letzt starten wir einen vollständigen Preload unseres Blogs. Tätigen Sie zuerst Ihre Einstellungen und drücken Sie auf Save Settings. Starten Sie dann im zweiten Durchgang den Preload-Vorgang

WP Super Cache Preload WordPress Inhalte

Sie sollten jetzt bereits bei ca. 80 Punkten ranken

Sie sollten bereits jetzt bei Google Page Speed bei rund 80 Punkten liegen. In der Regel bekommen Sie nur noch einige restliche Fehler. Einige einzelne externe .css- und .js-Dateien (beispielsweise von Plugins wie Clicky Analtics oder einzelnen Plugins) werden noch als Render Blocking gekennzeichnet oder werfen noch einen Fehler unter „Leverage Browser Caching“. Diese werden jedoch von den oben genannten Plugins nicht beeinflusst, da sie von extern kommen.

Einige Plugins bieten hierzu die Möglichkeit, die jeweiligen .js oder .css-Dateien von der externen Quelle runterzuladen und dann lokal bereitzustellen. Das nennt man dann einen „Javascript Proxy“. Die JavaScript Datei ist nach Speicherung der Änderungen bei Ihnen lokale gespeichert, beispielsweise unter httpdocs/wp-content/cache/abtf/proxy/be/96/<zeichenstring>.js. Diese Datei können Sie nun nehmen, auf JSCompress hochladen und als komprimierte Datei noch einmal überspeichern. Nun ist die Datei komprimiert.

Vorteil: Sie können diese Dateien jetzt minimieren und cachen, da Sie lokal von Ihrem Webserver angeboten werden. Nachteil: Dieser Proxy nimt die aktuelle Version der .js-Datei, aktualisiert sie aber nicht regelmäßig. Wenn die externe Datei aktualisiert ist, kriegt das der Proxy nicht von Haus aus mit. Sie müssten dann selbständig aktualisieren. Und: Ihr Webserver muss eine Datei mehr ausliefern, was die Ladezeit erhöhen statt senken kann.

Wordpress Proxy Render Blocking Javascript

Manche .js und .css-Dateien kriegen Sie nicht in den Griff, weil Sie über einen sogenannten Query String abgefragt werden. Auch hier gibt es entsprechende Plugins, die die Query Strings entfernen. Das heißt aber dann, dass Sie nicht eine gewisse Version der Datei bekommen, sondern immer die neueste.

Meine persönliche Erfahrung hierzu ist, dass die paar Punkte mehr bei der Google Page Speed Optimierung den Ärger mit der Aktualisierung der Dateien nicht wert sind.

Denken Sie über ein CDN nach

Ein Content Delivery Network bringt Ihrer WordPress-Seite gleich auf mehreren Ebenen einen Performancevorteil. Zwar bietet WordPress mit installierter Jetpack-Erweiterung ein CDN für Bilder an (genannt Jetpack Photon), jedoch bietet dieses nicht die selben Vorteile wie ein professionelles CDN und funktioniert nicht für Videos und Audiodateien. Die einzelnen Vorteile zähle ich nun am Beispiel der CDN von CloudFlare auf

  • Bilder, Videos und Audio-Dateien, welche sich auf Ihrer WordPress-Seite befinden, werden nun nicht mehr direkt von Ihrem Webserver geladen, sondern vom CDN-Anbieter. Dies reduziert zum einen die Ladezeiten der Besucher, bis Sie die entsprechenden Inhalte bekommen. Zum Anderen muss Ihr eigener Webserver nun weniger Last bearbeiten und hat dadurch mehr freie Ressourcen
  • Das CDN ist sehr gut skaliert und dadurch dazu in der Lage, mehr Anfragen gleichzeitig zu beantworten, als ein kleiner Server das könnte. Wenn Sie selbst eine große Server-Infrastruktur im eigenen Rechenzentrum haben, haben Sie vermutlich ohnehin schon weiter oben aufgehört zu lesen.
  • Im Gegensatz zu Jetpack Photon lenthalten die URLs Ihrer Bilder immer noch den Domain Namen (im meinem Fall beispielsweise dafrk-blog.com). Bei jetpack Photon hingegen werden die Bilder von einer URL im Format
  • JPEG- und PNG-Bilder, die auf Ihrer Website eingebunden sind, werden vom CDN (abhängig vom Tarif) automatisch in das WebP-Format umgeschrieben, wenn die Anfrage von einem Browser kommt, der das WebP-Format unterstützt (aktuell Chrome, Opera und die integrierten Browser in Android-Geräten)
  • Wenn Sie viele Plugins auf Ihrer WordPress-Installation haben, müssen in der Regel viele JavaScript- und CSS-Dateien geladen werden. Denn jedes Plugin hat seine eigenen .js- und .css-Dateien. Das kann die Ladezeit rapide erhöhen. Wenn Sie ein CDN nutzen, erden diese Daten vom content Delivery Network bereit gestellt und von dort geladen. Das CDN kümmert sich dabei automatisch um die Minimierung und Komprimierung der Daten und bietet diese im Falle von HTTP2 parallel an.
  • Das CDN ist von Haus aus HTTP2 fähig. Wenn Sie es also aus technischen Gründen nicht hin bekommen, Ihren Blog HTTP2-fähig zu machen, kann das CDN diese Technologie zumindest für Bilder, Videos und Audio-Dateien implementieren.
  • Das CDN bietet  (abhängig vom Tarif) eine grundlegende Web Application Firewall und bietet somit einen grundlegenden Schutz gegen Angriffe von außen, beispielsweise den Versuch von SQL-, Command- und Content-Injections.
  • Das CDN wehrt (abhängig vom Tarif) Denial of Service Angriffe auf Ihre Webseite ab.

Der Nameserver-Eintrag (NS-Record) muss änderbar sein

Bevor Sie über ein Content Delivery Network nachdenken, müssen Sie sicher stellen, dass die Domain, unter welcher Sie Ihren WordPress Blog betreiben, einen anderen Nameserver verwenden kann als den Ihres Domain-Anbieters. Technisch bedeutet das: Sie als Kunde müssen den NS-Record ändern können und dadurch auf einen Nameserver von dem CDN-Anbieter zeigen.

Das Problem: Nicht jeder Domain-Anbieter erlaubt diese Änderung. Gerade Billig-Anbieter ziehen sich hier häufig aus der Verantwortung. Denn als Zone-C ist der Domain-Anbieter dafür verantwortlich, dass die Nameserver, unter die eine Domain betrieben wird, lauffähig sind. Gibt Ihnen der Domain-Anbieter als Kunde die Möglichkeit, die Nameserver zu ändern, muss garantiert sein, dass diese erreichbar sind. Denn sonst werden die Domains nach 30 Tagen von der DeNic gelöscht. Premium-Anbieter ermöglichen Ihren Kunden die Änderung des NS-Records, Billig-Anbieter hingegen häufig nicht.

Strato Nameserver Record (NS-Record) ändern

Bei Strato ist es möglich, den Nameserver Record (NS-Record) zu ändern

Cloudflare für WordPress als kostenloses CDN aufsetzen

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie den kostenlosen Plan von CloudFlare nutzen, um ein CDN in Ihre WordPress-Installation zu integrieren. Zunächst müssen Sie auf Cloudflare einen Account erstellen.  Begeben Sie sich auf die Homepage von CloudFlare und klicken Sie den Sign Up Link

Cloudflare das kostenlose CDN für WordPress

Cloudflare das kostenlose CDN für WordPress

Registrieren Sie sich mit E-Mail und Kennwort und geben Sie im Folgefenster die Domain Ihrer Website ein.

Cloudflare kostenloses Content Delivery Network für WordPress

Cloudflare kostenloses Content Delivery Network für WordPress

Bestätigen Sie mit Next, um die DNS-Einträge der Nameserver Ihrer Domain in das CloudFlare Backend zu importieren

Cloudflare DNS Einträge importieren

Cloudflare DNS Einträge importieren

Im Folgefenster wählen wir den Free Plan

Cloudflare Free Plan kostenlos

Cloudflare Free Plan kostenlos

Nachdem Sie nun im Popup das Abonnement bestätigt haben (gehen Sie an dieser Stelle noch einmal sicher, dass Sie wirklich den Free Plan gewählt haben, und lesen Sie die Terms of Service), werden nun die DNS-Eintrag auf Ihrem Nameserver angezeigt. Das Tool versucht automatisch die A-Records und CNAME-Records Ihrer Domain auszuwählen, welche für das CDN wichtig sind. In meinem Beispiel ist mein Blog sowohl unter https://dafrk-blog.com als auch unter https://www.dafrk-blog.com erreichbar. Daher ist der A-Record für die Hauptdomain sowie der CNAME-Eintrag für www genau richtig gewählt.

Cloudflare Content Delivery Network für WordPress aktivieren und einstellen

Cloudflare Content Delivery Network für WordPress aktivieren und einstellen

Im Screenshot zeigen die orangenen Wolken an, dass diese DNS-Einträge für CloudFlare aktiviert werden (1). Das bedeutet alle Anfragen, die an diese DNS-Einträge gehen, werden an das CloudFlare-Netzwerk weitergeleitet. Unter (2) erhalten Sie die Information, dass das kostenlose CloudFlare-Paket nicht dazu in der Lage ist, den Wildcard-Eintrag an das CloudFlare-Netzwerk weiterzuleiten. Das heißt im Endeffekt, es ist nicht möglich, spontan ALLE DNS-Einträge an CloudFlare weiterzuleiten (also auch Anfragen an mail.dafrk-blog.com, ftp.dafrk-blog.com o. Ä.). Dazu benötigen Sie das Enterprise-Paket. Für unsere Zwecke reicht es aber, wenn nur die Anfragen an unseren WordPress-Blog, sprich an dafrk-blog.com und www.dafrk-blog.com weitergeleitet werden.

Bestätigen Sie die Auswahl über den Button Continue. Sie werden im Folgefenster dazu aufgefordert, Ihre DNS-Einträge anzupassen. Lassen Sie sich von den Einträgen unter (1) nicht verwirren. Das sind nur die Hostnamen bzw. Full Qualified Domain Namen (FQDNs) des primären und sekundären Nameserver Ihres aktuellen Domain-Anbieters. Was CloudFlare von uns will, ist, dass wir nun als Nameserver nicht mehr die Nameserver unseres Domain-Anbieters verwenden, sondern die von CloudFlare.

Cloudflare DNS Server Einträge ändern

Cloudflare DNS Server Einträge ändern

Dazu ändern Sie entsprechend die NS-Einträge Ihrer Domain ab. Es kann eine Weile dauern, bis sich die Änderung weltweit repliziert hat. Sie können bei den Diensten WhatsMyDNS oder  bei DNSDumpster  nachsehen, wie der Status der Replikation ist. Danach können Sie den Prozess auf der cludflare-Seite mit dem Klick auf „Continue“ fortsetzen. Wenn Sie nun im Cloudflare-Dashboard den Status prüfen, sollte der Status auf „active“ stehen.

 

Sind die Änderungen vollständig repliziert und Cloudflare aktiv geschaltet, müssen Sie zu guter letzt noch das WordPress-Caching Plugin aktivieren. Wichtig: Das CloudFlare über seine eigenen Nameserver gesteuert wird, müssen Sie im Caching-Plugin (z. B. in WP Super Cache) keine Einstellungen im Reiter CDN machen.

WP Super Cache für Cloudflare konfigurieren

WP Super Cache für Cloudflare konfigurieren

Diese Einstellungen sind für CDNs, die nach der DNS Pull Methode funktionieren. Cloudflare fällt nicht in diese Kategorie, daher sind an dieser Stelle keine weiteren Einstellungen notwendig. Das einzige, was Sie tun müssen, ist das Caching zu aktivieren und den Cache initial einmal zu löschen (also zu leeren), damit der Cache neu befüllt wird.

WP Super Cache bereinigen für Cloudflare

WP Super Cache bereinigen für Cloudflare

Sichtbare Inhalte priorisieren

Wenn Sie von den Google Page Speed Insights noch den Hinweis kriegen, dass Sie „sichtbare Inhalte priorisieren“ sollen, heißt dies, dass die „Above the Fold Inhalte“ der HTML-Seite, also alle Inhalte, die ohne scrollen nach unten beim ersten Laden sichtbar sind, zu groß sind, um in einem HTTP-Antwortpaket übertragen zu werden. Dieses HTTP-Antwortpaket ist üblicherweise 14,6 KB groß. Das heißt: Wenn am Anfang Ihrer Seite große Inhalte wie beispielsweise Bilder untergebracht werden, bekommen Sie diese Meldung automatisch.

Ihre einzigen Möglichkeit, diese Inhalte weg zu bekommen, sind:

  • Sie verzichten auf Bilder in der Above the Fold Sektion Ihrer Seite
  • Ihr Theme bietet eine Option, mit welcher das Laden von nicht sichtbaren Bildern auf einen Zeitpunkt verzögert wird, an welchem sie durch Scrollen sichtbar werden. Vorsicht: Dies kann euch auch weh tun, wenn sich euer Theme und die Google Page Speed Insights darüber uneinig sind, was noch zum „above the Fold“ Content zählt und was nicht. In meinem Fall hat das Aktivieren der unten markierten Option im Screenshot zu einer Verschlechterung bei „Sichtbare Inhalte priorisieren“ geführt. Daher habe ich es im Anschluss wieder deaktiviert.
Bilder beim Scrollen Laden Sichtbare Inhalte priorisieren

Mein Theme bietet eine Möglichkeit zur Verzögerung der Bildladezeit.

  • sofern es sich um kleine Bilder handelt, kann es sich lohnen, diese nicht als Bild-Datei, sondern stattdessen als BASE64-enkodierter String zu implementieren. Das lohnt sich jedoch nur bei kleinen Bildern. Bei größeren Bildern wird der BASE64-String länger als die Dateigröße des eigentlichen Bilde, was sich wieder negativ auswirkt. Diese Optimierung bekommen Sie freilich auch nur dann hin, wenn Sie in Ihrem WordPress-Theme einen Einfluss auf die Kodierung der Bilder haben.
  • Wenn Sie nur leicht über der Paketgröße von 14,6 KB liegen, können Sie versuchen, auf diese Größe zu kommen, indem Sie die Bilder als im besser komprimierten WebP-Format ausliefern (siehe oben) und indem Sie den generellen HTML-Inhalt mit Google’s neuer Brotli-Kompression verkleinern. Wie Sie Ihren nginx-Webserver so kompilieren, dass er Brotli unterstützt, zeige ich Ihnen in einem neuen Beitrag.

Im nächsten Beitrag

Gehen Wir noch einen Schritt weiter. Wir werden im nächsten Beitrag lernen

  • Wie Sie Ihre WordPress-Installation durch die Caching Technologien memcached, Varnish oder Redis nochmal schneller machen
  • Wie Sie Ihre WordPress-Installation in einem Scaling-Out Szenario auf mehreren Servern betreiben. Dabei schauen wir uns einmal das Subscription Load Balancing unter Onyx Plesk und einmal eine wirklich hoch-professionelle Scale-Out Konfiguration mit Hilfe von Amazon Web Services an
  • Wie Sie den „Leverage Browser Caching“ Fehler für Google Analytics bei Google Page Speed weg bekommen
  • Wie Sie nginx als Reverse Proxy neu kompilieren, um die Google Brotli-Komprimierung, TLSv1.3-Verschlüsselungsbibliotheken und das nginx-pagespeed-Modul zu unterstützen. Alle diese Maßnahmen wirken sich positiv auf die Performance aus.

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren...

Kommentar verfassen

This site uses Akismet to reduce spam. Learn how your comment data is processed.