Cache Enabler: Dieses Snippet verhindert PHP-Ausführung

Inhaltsverzeichnis

Cache Enabler noch schneller machen

Als ich euch vor kurzem das Wordpress Plugin Cache Enabler vorstellte, war ich wirklich sehr begeistert. Die Erweiterung ist im Großen und Ganzen rund 1 Sekunde schneller als jegliches andere Caching Plugin für Wordpress, sogar schneller als das extreme Leichtgewicht und der bisherige Geschwindigkeitssieger Cachify. Doch auch Cache Enabler lässt sich noch weiter optimieren, nämlich indem die PHP-Ausführung ganz und gar übersprungen wird. Das erfordert aber ein wenig Tuning innerhalb der .htaccess-Datei und ist daher nicht unbedingt für Anfänger geeignet. Wobei im Grunde nur ein fertiges Snippet kopiert werden muss, welches den Cache Enabler noch einmal schneller macht, vor allem aber den Server weiter entlastet und unnötige Umwege verhindert. Falls ihr WebP-Bilder nicht benutzt, kann der erste Teil (# webp HTML file) übrigens komplett entfernt werden, denn eine fette .htaccess drückt ebenfalls auf die Performance.

Folgendes in die .htaccess von Wordpress einfügen:

# BEGIN Cache Enabler
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# set blog sub path
SetEnvIf Request_URI "^(.*)$" SUB_PATH=/wp-content/cache/cache-enabler/

# set Cache Enabler path
SetEnvIf Request_URI "^(.*)$" CE_PATH=$1
SetEnvIf Request_URI "^(/)index.php$" CE_PATH=$1

<IfModule mod_mime.c>
# webp HTML file
RewriteCond %{ENV:CE_PATH} /$
RewriteCond %{ENV:CE_PATH} !^/wp-admin/.*
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{HTTP:Accept} image/webp
RewriteCond %{DOCUMENT_ROOT}%{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index-webp.html.gz -f
RewriteRule ^(.*) %{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index-webp.html.gz [L]

# gzip HTML file
RewriteCond %{ENV:CE_PATH} /$
RewriteCond %{ENV:CE_PATH} !^/wp-admin/.*
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}%{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html.gz -f
RewriteRule ^(.*) %{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html.gz [L]

AddType text/html .gz
AddEncoding gzip .gz
</IfModule>

# webp HTML file
RewriteCond %{ENV:CE_PATH} /$
RewriteCond %{ENV:CE_PATH} !^/wp-admin/.*
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
RewriteCond %{HTTP:Accept} image/webp
RewriteCond %{DOCUMENT_ROOT}%{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index-webp.html -f
RewriteRule ^(.*) %{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index-webp.html [L]

# default HTML file
RewriteCond %{ENV:CE_PATH} /$
RewriteCond %{ENV:CE_PATH} !^/wp-admin/.*
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
RewriteCond %{DOCUMENT_ROOT}%{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html -f
RewriteRule ^(.*) %{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html [L]

# wp override
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [END]
</IfModule>
# END Cache Enabler

Server entlasten und Blog beschleunigen

Darauf aufmerksam machte mich direkt beim Release übrigens ein Nutzer, der nach einem Problem das Snippet im Support von KeyCDN, dem Entwickler hinter Cache Enabler fand. Jetzt habe ich mich dazu entschlossen, das Snippet noch einmal hier zu veröffentlichen, weil ich es für wichtig halte und es ein wenig untergegangen ist, wie ich finde. Denn wer PHP mit dem Cache Enabler komplett umgeht, sorgt dafür, dass es keinerlei Umwege mehr gibt und das Caching Plugin direkt zur statischen HTML-Datei weiterleitet, wenn diese bereits zur Verfügung steht, was natürlich deutlich effizienter ist. Ausnahmen gibt es natürlich, denn im Gegensatz zu Cachify, funktioniert die wp-cron.php auch mit dem Snippet weiterhin und erledigt ihre Arbeit. Danke an Nils für den Hinweis, da haben sich die eingeschalteten Kommentare doch schon wieder gelohnt.

Christian Pust
WordPress & Onlinemarketing Experte mit über 15 Jahren Erfahrung. Entwickler & CEO von Trackboxx – der Google Analytics Alternative.

Eine Antwort

  1. Hallo Christian,

    danke für deinen Beitrag.

    Ich habe die ganze Zeit Chrome verwendet und meine Website hat auch .webp Bilder ausgeliefert. Wenn ich meine Seite aber mit Firefox aufrufe, werden nur .jpg Bilder ausgeliefert.
    Ich habe gelesen, dass das wohl mit den HTTP Header zusammenhängt, die Firefox, anders als Chrome, an die Webseiten übermitteln würde.

    In about:config in Firefox steht bei mir (standardmäßig) unter image.http.accept image/webp,*/* drin. Das sollte doch so richtig sein?

    Was muss ich in der .htaccess anpassen, damit sowohl bei Chrome, als auch bei Firefox, .webp Bilder ausgeliefert werden?

    Viele Grüße
    Torsten

Schreibe einen Kommentar

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

Das könnte dich auch interessieren

Du benötigst Unterstützung bei deinem WordPress Projekt?

Dein Ansprechpartner
Christian