Comment vider le cache via une tâche cron

Dans cette documentation

WP Rocket offre des fonctions personnalisées pour effacer et précharger le cache. Afin de les exécuter à des heures spécifiques chaque jour, vous pouvez utiliser une tâche CRON sur votre serveur.

Mettre en place une tâche CRON

  1. Si vous souhaitez vous assurer que le cache est vidé à un moment précis chaque jour, vous pouvez créer une  tâche cron (via votre hébergeur, regardez cette vidéo pour un exemple rapide) et le déclencher quand vous le désirez.
  2. Au lieu de pointer vers wp-cron (comme dans le tutoriel ci-dessus), vous allez définir votre tâche cron pour pointer vers le fichier spécifique que vous créez et téléchargez à l'étape suivante. Assurez-vous d'indiquer le chemin d'accès correct à votre fichier personnalisé, rocket-clean-domain.php, dans les paramètres de votre tâchecron job.

Vider le cache

  1. Créez un fichier PHP et nommez-le (par exemple) : rocket-clean-domain.php
  2. Pour vider le cache de l'ensemble du site, utilisez le code suivant dans votre fichier :
  3. <?php 
    // Load WordPress.
    require( 'wp-load.php' );
    
    // Clear cache.
    if ( function_exists( 'rocket_clean_domain' ) ) {
    	rocket_clean_domain();
     }
    	
  4. Téléchargez ce fichier à la racine de votre installation WordPress (où wp-config.php et wp-load.php sont situés).
  5. Remarque : Si vous le placez à un autre endroit, vous devrez modifier le chemin dans require( 'wp-load.php' ); ci-dessus pour que ça corresponde au bon endroit.

  6. Assurez-vous de spécifier le bon chemin vers le fichier rocket-clean-domain.php dans les réglages de votre tâche cron.

Alternatives

Vous pouvez utiliser l'un des extraits de code suivants au cas où vous voudriez également précharger le cache, ou effacer une page spécifique au lieu de la totalité du cache.

Vider le cache et lancer le préchargement

La fonction ci-dessus ne fait que vider le cache, elle ne le précharge pas. Vous devez également utiliser   run_rocket_sitemap_preload() pour déclencher le pré-chargement. Assurez-vous qu'une URL de Sitemap est bien définie dans vos options WP Rocket.

<?php 
// Load WordPress.
require( 'wp-load.php' );

// Clear cache.
if ( function_exists( 'rocket_clean_domain' ) ) {
	rocket_clean_domain();
}

// Preload cache.
if ( function_exists( 'run_rocket_sitemap_preload' ) ) {
	run_rocket_sitemap_preload();
}

Vider et précharger une ou des page(s) spécifique(s)

Au lieu d'effacer tout le cache, vous pouvez effacer une URL spécifique avec l'extrait de code suivant. Assurez-vous tout d’abord de : 

  • Remplacez https://example.com/page_url_1 avec l’URL que vous souhaitez précharger.
  • Copiez et modifiez la ligne pour toutes les URLs que vous souhaitez effacer et précharger.
<?php

// Load WordPress.
require( 'wp-load.php' );

define( 'WP_USE_THEMES', false );

// Add one page/post per line.
$pages_to_clean_preload = [
		'https://example.com/page_url_1',//copy this line as many times as necessary.
		'https://example.com/page_url_2',//copy this line as many times as necessary.
		];

if ( function_exists( 'rocket_clean_post' ) ) {

	foreach( $pages_to_clean_preload as $page_to_clean) {
		rocket_clean_post( url_to_postid ( $page_to_clean ) );
	}
}

if ( function_exists( 'get_rocket_option' ) ) {
	
	if( 1 == get_rocket_option( 'manual_preload' ) ) {
		
		$args = array();

		if( 1 == get_rocket_option( 'cache_webp' ) ) {
			$args[ 'headers' ][ 'Accept' ]      	= 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
			$args[ 'headers' ][ 'HTTP_ACCEPT' ] 	= 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
		}
	
		// Preload desktop pages/posts.
		rocket_preload_page( $pages_to_clean_preload, $args );
		
		if( 1 == get_rocket_option( 'do_caching_mobile_files' ) ) {
			$args[ 'headers' ][ 'user-agent' ] 	= 'Mozilla/5.0 (Linux; Android 8.0.0;) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36';
		
			// Preload mobile pages/posts.
			rocket_preload_page(  $pages_to_clean_preload, $args );
		}
  	}
}

function rocket_preload_page ( $pages_to_preload, $args ){
	
	foreach( $pages_to_preload as $page_to_preload ) {
		wp_remote_get( esc_url_raw ( $page_to_preload ), $args );
	}
}
Cela a-t-il répondu à votre question ? Merci pour votre retour :) Une erreur est survenue lors de l’envoi de votre retour. Veuillez réessayer plus tard.