WP Rocket daran hindern, gefilterte WooCommerce-Seiten zu cachen
· von Daniel
Wenn Sie WP Rocket mit Preloading zusammen mit einem Filter-Plugin wie Filter Everything Pro nutzen, können Datenbank UND Cache-Ordner explodieren. Wir hatten eine Website mit nur rund 2.000 Produkten, aber 100 filterbaren Produkteigenschaften.
Das führte zu über 2 Millionen Einträgen in der Tabelle wp_rocket_cache und einem Cache-Ordner von bis zu 200 GB. Deshalb haben wir WP Rocket daran gehindert, gefilterte WooCommerce-Kategorieseiten zu cachen.
Dieses Code-Snippet hat unser Problem gelöst:
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
Zusätzlich zum obigen Code sollten Sie den folgenden ergänzen. Der Amazonbot zum Beispiel crawlt Websites sehr intensiv. Sie können ihn per .htaccess blockieren und außerdem gefilterte URLs nicht cachen und dafür kein CSS erzeugen lassen.
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