Voorkomen dat WP Rocket gefilterde WooCommerce-pagina’s cachet
· door Daniel
Gebruik je WP Rocket met preloading samen met een filterplugin zoals Filter Everything Pro, dan kunnen je database EN je cachemap exploderen. We hadden een site met maar zo’n 2000 producten, maar met 100 filterbare productkenmerken.
Het resultaat: een wp_rocket_cache-tabel met meer dan 2 miljoen rijen en een cachemap van 200 GB. Om dat op te lossen, hebben we WP Rocket gefilterde WooCommerce-categoriepagina’s laten overslaan.
Dit codefragment loste ons probleem op:
add_filter( 'rocket_preload_exclude_urls', function( $regexes, $url ) {
$url = untrailingslashit( $url );
if(function_exists('is_filtered')){
if ( is_filtered() ) {
$regexes[] = $url;
add_filter( 'do_rocket_generate_caching_files', '__return_false' );
}
}
if(function_exists('flrt_is_filter_request')){
if ( flrt_is_filter_request() ) {
$regexes[] = $url;
add_filter( 'do_rocket_generate_caching_files', '__return_false' );
}
}
return $regexes;
}, 10, 2 );
Update 2025
Naast de code hierboven moet je ook de code hieronder toevoegen. Amazonbot crawlt sites bijvoorbeeld heel intensief. Je kunt Amazonbot via .htaccess blokkeren en daarnaast gefilterde URL’s niet cachen en er geen CSS voor genereren.
function disable_cache_for_filtered_urls() {
if ( function_exists( 'flrt_is_filter_request' ) && flrt_is_filter_request() ) {
if ( ! defined( 'DONOTCACHEPAGE' ) ) {
define( 'DONOTCACHEPAGE', true ); // Disable WP Rocket caching
}
}
if(function_exists('is_filtered') && is_filtered()){
if ( ! defined( 'DONOTCACHEPAGE' ) ) {
define( 'DONOTCACHEPAGE', true ); // Disable WP Rocket caching
}
}
}
add_action( 'template_redirect', 'disable_cache_for_filtered_urls' );
.htaccess-code
# Block Harmful RobotRewriteEngine On RewriteCond %{HTTP_USER_AGENT} (amazonbot|semrushbot|ahrefsbot) [NC] RewriteRule (.*) - [F,L] # END Block Harmful Robot