DONOTCACHEPAGE ├╝berschreiben (Caching forcieren)

Inhalt

Einleitung

Die meisten Caching-Plugins f├╝r WordPress nutzen einen de facto Standard, um Seiten vom Cache auszuschlie├čen: Die Konstante DONOTCACHEPAGE. Wenn diese w├Ąhrend einer Anfrage als true definiert ist, wird WP Rocket die betreffende Seite nicht cachen, sondern eine regul├Ąre Datenbankabfrage von WordPress erlauben.

Allerdings kann es in seltenen F├Ąllen notwendig werden, dieses Verhalten zu ├╝berschreiben, und WP Rocket bietet auch daf├╝r eine M├Âglichkeit. So gehtÔÇÖs:

Wie WP Rocket eine Seite cacht

Das ultimative Ziel eines jeden Caching-Plugins muss darin bestehen zu verhindern, dass WordPress geladen wird; stattdessen muss es daf├╝r sorgen, dass eine angeforderte Seite wann immer m├Âglich als Sammlung statischer Dateien an den Browser ausgeliefert wird.

Das Cachen einer Seite durch WP Rocket l├Ąsst sich vereinfacht folgederma├čen beschreiben:

1
Eine der ersten Dateien, die WordPress nach der initialen Anfrage an seine index.php l├Ądt, ist die wp-config.php. WP Rocket hat direkt am Anfang der wp-config.php als Erstes eine Konstante ÔÇô WP_CACHE ÔÇô als true definiert: define( 'WP_CACHE', true);
2
Diese weist WordPress an, wp-content/advanced-cache.php zu laden.
3
Aus advanced-cache.php heraus weist WP Rocket WordPress an, wp-rocket/inc/front/process.php zu laden.
4
Innerhalb von process.php l├Ądt WP Rocket wp-content/wp-rocket-config/{site-url.tld}.php, die relevante benutzerdefinierte Konfigurationen enth├Ąlt.
5
Immer noch aus process.php heraus und nachdem es eine Reihe von Ausnahmen gepr├╝ft hat, cacht WP Rocket die Dateien f├╝r die angefragte Seite.

Einmal gecacht, wird die Seite bei der n├Ąchsten Anfrage direkt aus dem Cache und ohne Datenbank-Anfrage zu WordPress ausgeliefert.

Seiten mittels DONOTCACHEPAGE vom Cache ausschlie├čen

F├╝r bestimmte Seiten-Typen ist es unerl├Ąsslich, dass sie nicht gecacht werden. Zum Beispiel in einem E-Commerce-Szenario: Wenn eine Kundin den Bezahlvorgang startet, m├Âchte sie wohl kaum eine gecachte Seite mit den Bezahldaten eines vorherigen Kunden sehen.

Aufwendige Plugins, wie beispielsweise like WooCommerce (and many others), nutzen die Konstante DONOTCACHEPAGE, um Caching-Plugins wissen zu lassen, dass bestimmte Seiten oder Endpoints auf keinen Fall gecacht werden sollen.

Dementsprechend unterst├╝tzen alle beliebten Caching-Plugins, inklusive WP Rocket, jene Konstante und cachen keine Anfrage, f├╝r die DONOTCACHEPAGE als true definiert ist.

DONOTCACHEPAGE mittels Filter in WP Rocket ├╝berschreiben

So praktisch eine allgemein genutzte Konstante wie DONOTCACHEPAGE auch sein mag, gibt es F├Ąlle, in denen ein Site-Admin die Konstante ├╝berschreiben muss, um einen bestimmten Typ Anfragen eben doch cachen zu lassen ÔÇô egal, ob ein Drittanbieter-Plugin mittels der bekannten Methode eine Seite vom Cache ausschlie├čen m├Âchte.

WP Rocket deckt dir in so einem Fall den R├╝cken. Du brauchst lediglich true als Wert an einen speziellen Filter in WP Rocket zu ├╝bergeben, und WP Rocket wird die Konstante DONOTCACHEPAGE einfach ignorieren.

add_filter( 'rocket_override_donotcachepage', '__return_true', PHP_INT_MAX );

Helfer-Plugin

Das folgende Helfer-Plugin wendet die obige Code-Zeile automatisch an und ├╝berschreibt damit (innerhalb von WP Rocket) den Wert der Konstante  DONOTCACHEPAGE.

­čôą  Download (.zip):  WP Rocket | Force Page Caching
Entwickler/-innen: Ihr findet den Code f├╝r dieses Plugin auf GitHub.

Beispiel: Gecachte Mitgliederseiten

Sagen wir beispielhalber, du nutzt ein Membership-Plugin, um spezifischen Inhalt nur eingeloggten Mitgliedern zug├Ąnglich zu machen. Du hast die Einstellung Personalisierter Cache in WP Rocket aktiviert, damit deinen Mitgliedern schnell ladende, gecachte Seiten angezeigt werden.

Mache Membership-Plugins definieren die Konstante DONOTCACHEPAGE f├╝r eingeloggte Benutzer/-innen, da es ein verbreitetes Nutzungsszenario w├Ąre, keine statischen, sondern dynamische Inhalte f├╝r eingeloggte Benutzer/-innen anzuzeigen.
In unserem Beispiel jedoch w├Ąre es aber dein Ziel, statische Inhalte f├╝r eingeloggte Mitglieder anzuzeigen, zus├Ątzlich zu den ├Âffentlichen Inhalten, die normale Besucher/-innen sehen. In solche einem Fall m├╝sstest du die DONOTCACHEPAGE-Direktive des Membership-Plugins ├╝berschreiben, damit die Einstellung Cache f├╝r angemeldete Nutzer in WP Rocket f├╝r dein Szenario die richtigen Ergebnisse bringen k├Ânnte.

Dies gelingt am besten mit dem oben verlinkten Helfer-Plugin.