Revocare il DONOTCACHEPAGE tramite filtro in WP Rocket

In questo articolo

Introduzione

Gran parte dei plugin di cache per WordPress usano una maniera standard per escludere le pagine dalla cache: la costante  DONOTCACHEPAGE.
Se questa costante è definita come  true durante una richiesta, WP Rocket non metterà in cache la pagina in question, però permetterà una regolare richiesta del database a WordPress.

Nonostante ciò, in alcuni rari casi, è necessario revocare questo comportamento e WP Rocket ti permette di farlo. Ecco come.

Come WP Rocket mette in cache le pagine

Lo scopo finale di ogni plugin di cache è quello di impedire il caricamento WordPress e di restituire, ogni qualvolta sia possibile, la pagina richiesta al browser come una collezione di file statici.

La messa in cache di una pagina da parte di WP Rocket potrebbe essere semplificata come segue:

1
Uno dei primi file WordPress che vengono caricati dopo la prima richiesta iniziale all'  index.php è il file wp-config.php. La prima cosa che WP Rocket ha fatto è stata definire la costante— WP_CACHE—come  true all'inizio del file  wp-config.php:
define( 'WP_CACHE', true);
2
Questo indica a WordPress di caricare wp-content/advanced-cache.php.
3
Dentro il contenuto del file  advanced-cache.php vi è anche il comando per cui WP Rocket dice a WordPress di caricare il file wp-rocket/inc/front/process.php.
4
Dall'interno del  process.php WP Rocket carica poi wp-content/wp-rocket-config/{site-url.tld}.php che contiene la configurazione relativa a un determinato utente.
4
Sempre dal file process.php, e dopo aver processato molti controlli di esclusione etc, WP Rocket arriva a mettere in cache i file per la pagina richiesta.
Una volta che la pagina è stata messa in cache, la richiesta verrà direttamente servita dalla cache, senza alcun database di query o PHP.

Escludere una pagina dalla cache tramite DONOTCACHEPAGE

Per alcuni tipo di pagine, è imperativo che la cache non sia attiva. Pensa per esempio al contesto di un e-commerce: quando il cliente arriva al pagamento, vogliamo evitare che veda una pagina cache con i dati di pagamento del cliente precedente!

Plugin elaborati come WooCommerce (e molti altri) usano la costante  DONOTCACHEPAGE per far sapere ai plugin di cache che certe pagine non dovrebbero mai essere messe in cache.

Di conseguenza, tutti i plugin di cache più popolari, incluso WP Rocket, supportano questa costante e non immagazzinano in cache una richiesta per la quale la costante   DONOTCACHEPAGE è definite come true.

Rimuovere DONOTCACHEPAGE tramite filtro in WP Rocket

Per quanto la costante  DONOTCACHEPAGE risulti utile e comoda in molti casi, ci sono delle situazioni in cui l'amministratore del sito ha bisogno di rimuoverla in modo da forzare la messa in cache di una data richiesta, a prescindere dal fatto che un plugin esterno stia tentando di usare la costante per escludere la pagina dalla cache. 

WP Rocket ti viene incontro: tutto ciò che devi fare è passare  true dentro uno speciale filtro di WP Rocket, e WP Rocket ignorerà la costante DONOTCACHEPAGE.

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

Plugin di supporto

Il seguente plugin di supporto aggiunge il codice presentato sopra e rimuove in modo semplice la costante DONOTCACHEPAGE.

📥  Scarica  (.zip):  WP Rocket | Force Page Caching

Se ti occupi dello sviluppo del sito: Puoi trovare il codice per questo plugin su GitHub.

Esempio: Pagine in cache per gli utenti registrati del tuo sito

Diciamo che tu stia usando un plugin di membership che ti permette di servire del contenuto specifico ai soli utenti registrati del tuo sito. Vorresti poter abilitare la funzione di WP Rocket Cache Utente, così da offrire ai tuoi utenti registrati delle pagine più veloci, precedentemente messe in cache.

Alcuni plugin di membership definiscono la costante  DONOTCACHEPAGE per gli utenti registrati, perché normalmente gli utenti registrati hanno accesso a contenuto dinamico, non dinamico.

Nel nostro esempio, tuttavia, hai bisogno di dare ai tuoi utenti registrati solo del contenuto statico, aggiuntivo rispetto a quello offerto agli utenti non registrati. Per questo avrai bisogno di rimuovere la direttiva DONOTCACHEPAGE impostata dal plugin di membership e permettere così all'opzione Cache Utente di lavorare correttamente. 

Per farlo, meglio usare il plugin di supporto che abbiamo presentato qui sopra.