Skip to content

Beast Mode Configuration ​

Advanced configuration guide for Beast Mode automatic caching.

Overview ​

Beast Mode requires careful tuning to balance caching aggressiveness with server resources and content freshness.

Threshold Tuning ​

Understanding Scores ​

Pages are scored based on:

score = (hits × 10) + (rate × 5) + (avg_time / 100)

Example calculation:

Page: /blog/popular-post
Hits: 142 (in 1 hour)
Rate: 2.3 requests/minute
Avg Time: 450ms

Score = (142 × 10) + (2.3 × 5) + (450 / 100)
      = 1420 + 11.5 + 4.5
      = 1436
Site TypeThresholdReasoning
Low Traffic20-30Cache earlier
Medium Traffic40-60Balanced
High Traffic70-100Cache only very popular
Enterprise100+Very selective

Dynamic Threshold ​

Adjust based on time of day:

php
add_filter('speedmate_beast_threshold', function($threshold) {
    $hour = (int) date('H');
    
    // Business hours: lower threshold
    if ($hour >= 9 && $hour <= 17) {
        return $threshold * 0.7;
    }
    
    // Night: higher threshold
    if ($hour >= 22 || $hour <= 6) {
        return $threshold * 1.5;
    }
    
    return $threshold;
});

Whitelist Strategies ​

By Content Type ​

php
'beast_whitelist' => [
    // Homepage
    '/',
    
    // Blog content
    '/blog/*',
    '/category/*',
    '/tag/*',
    '/author/*',
    
    // Pages
    '/about',
    '/contact',
    '/services',
    
    // E-commerce
    '/shop/*',
    '/product/*',
    '/product-category/*',
]

By URL Pattern ​

php
'beast_whitelist' => [
    // All blog posts
    '/blog/????/??/??/*',  // Date-based URLs
    
    // All numeric IDs
    '/*-p[0-9]+',  // Posts with -p123 suffix
    
    // All category pages
    '/category/*/page/*',
]

Dynamic Whitelist ​

php
add_filter('speedmate_beast_whitelist', function($whitelist) {
    // Add all published posts
    $posts = get_posts([
        'numberposts' => 100,
        'post_status' => 'publish',
    ]);
    
    foreach ($posts as $post) {
        $whitelist[] = parse_url(get_permalink($post), PHP_URL_PATH);
    }
    
    // Add popular categories
    $categories = get_categories([
        'orderby' => 'count',
        'order' => 'DESC',
        'number' => 10,
    ]);
    
    foreach ($categories as $cat) {
        $whitelist[] = parse_url(get_category_link($cat), PHP_URL_PATH);
    }
    
    return $whitelist;
});

Blacklist Strategies ​

E-Commerce Protection ​

php
'beast_blacklist' => [
    // Checkout flow
    '/checkout/*',
    '/cart/*',
    '/order-received/*',
    '/order-pay/*',
    
    // User account
    '/my-account/*',
    '/customer/*',
    '/account/*',
    
    // Payment
    '/payment/*',
    '/billing/*',
]

User-Specific Content ​

php
'beast_blacklist' => [
    // User profiles
    '/profile/*',
    '/user/*',
    '/dashboard/*',
    
    // Dynamic forms
    '/contact-form/*',
    '/form/*',
    
    // Search
    '/*?s=*',
    '/search/*',
    
    // Admin
    '/wp-admin/*',
    '/wp-login.php',
]

Conditional Blacklist ​

php
add_filter('speedmate_beast_blacklist', function($blacklist) {
    // Don't cache if user is logged in
    if (is_user_logged_in()) {
        $blacklist[] = '/*';  // Blacklist everything
    }
    
    // Don't cache during sale
    if (is_sale_active()) {
        $blacklist[] = '/shop/*';
        $blacklist[] = '/product/*';
    }
    
    return $blacklist;
});

Time Window Configuration ​

Adaptive Window ​

php
add_filter('speedmate_beast_time_window', function($window) {
    // Get current traffic rate
    $current_rate = \SpeedMate\Utils\Stats::get_current_rate();
    
    // High traffic: shorter window
    if ($current_rate > 100) {
        return 1800;  // 30 minutes
    }
    
    // Low traffic: longer window
    if ($current_rate < 10) {
        return 7200;  // 2 hours
    }
    
    return $window;  // Default 1 hour
});

Peak Hours Detection ​

php
add_filter('speedmate_beast_time_window', function($window) {
    $hour = (int) date('H');
    
    // Peak hours: shorter window for faster adaptation
    if ($hour >= 9 && $hour <= 17) {
        return 1800;  // 30 minutes
    }
    
    // Off-peak: longer window
    return 3600;  // 1 hour
});

Cache TTL per Pattern ​

php
add_filter('speedmate_beast_ttl', function($ttl, $url) {
    // Homepage: 30 minutes
    if ($url === '/') {
        return 1800;
    }
    
    // Blog posts: 1 hour
    if (preg_match('#^/blog/#', $url)) {
        return 3600;
    }
    
    // Product pages: 15 minutes
    if (preg_match('#^/product/#', $url)) {
        return 900;
    }
    
    // Static pages: 24 hours
    if (preg_match('#^/(about|contact|privacy)#', $url)) {
        return 86400;
    }
    
    return $ttl;  // Default
}, 10, 2);

Scoring Customization ​

Custom Scoring Algorithm ​

php
add_filter('speedmate_beast_score', function($score, $url, $data) {
    // Boost score for specific patterns
    if (preg_match('#^/important/#', $url)) {
        $score *= 2;
    }
    
    // Reduce score for long pages
    if ($data['avg_time'] > 1000) {  // > 1 second
        $score *= 0.8;
    }
    
    // Boost for high engagement
    if ($data['avg_scroll_depth'] > 80) {
        $score *= 1.2;
    }
    
    return $score;
}, 10, 3);

Resource-Based Scoring ​

php
add_filter('speedmate_beast_score', function($score, $url, $data) {
    // Penalize resource-heavy pages
    $queries = $data['db_queries'] ?? 0;
    $memory = $data['memory_usage'] ?? 0;
    
    if ($queries > 50) {
        $score *= 0.7;  // Reduce score
    }
    
    if ($memory > 50 * 1024 * 1024) {  // > 50MB
        $score *= 0.8;
    }
    
    return $score;
}, 10, 3);

Monitoring Configuration ​

Enable Detailed Logging ​

php
update_option('speedmate_settings', [
    'logging_enabled' => true,
    'log_level' => 'debug',
    'log_beast_decisions' => true,
]);

Custom Logging ​

php
add_action('speedmate_beast_decision', function($decision, $url, $score) {
    if ($decision === 'cache') {
        error_log(sprintf(
            '[Beast] Auto-cached: %s (score: %d)',
            $url,
            $score
        ));
    }
}, 10, 3);

Metrics Collection ​

php
add_action('speedmate_beast_score_calculated', function($url, $score, $data) {
    // Send to analytics
    if (function_exists('send_to_analytics')) {
        send_to_analytics('beast_score', [
            'url' => $url,
            'score' => $score,
            'hits' => $data['hits'],
            'rate' => $data['rate'],
        ]);
    }
}, 10, 3);

Performance Optimization ​

Resource Limits ​

php
update_option('speedmate_settings', [
    'beast_max_cached_pages' => 1000,  // Max pages to cache
    'beast_max_memory' => 100 * 1024 * 1024,  // 100MB
    'beast_max_cache_size' => 500 * 1024 * 1024,  // 500MB
]);

Cleanup Strategy ​

php
add_filter('speedmate_beast_cleanup', function($should_cleanup, $stats) {
    // Cleanup if cache size > 400MB
    if ($stats['cache_size'] > 400 * 1024 * 1024) {
        return true;
    }
    
    // Cleanup if hit rate < 70%
    if ($stats['hit_rate'] < 70) {
        return true;
    }
    
    return $should_cleanup;
}, 10, 2);

A/B Testing ​

Test Different Thresholds ​

php
add_filter('speedmate_beast_threshold', function($threshold) {
    // 50% users get threshold 40, 50% get threshold 60
    $group = isset($_COOKIE['ab_group']) ? $_COOKIE['ab_group'] : rand(0, 1);
    
    if ($group === 0) {
        return 40;  // Group A: more aggressive
    } else {
        return 60;  // Group B: more conservative
    }
});

Track Results ​

php
add_action('speedmate_page_served', function($url, $cached) {
    $group = isset($_COOKIE['ab_group']) ? $_COOKIE['ab_group'] : 'unknown';
    
    // Log performance per group
    error_log(sprintf(
        '[Beast A/B] Group: %s, URL: %s, Cached: %s',
        $group,
        $url,
        $cached ? 'yes' : 'no'
    ));
});

Troubleshooting ​

Too Aggressive ​

Symptoms: Stale content, high cache invalidation

Solution:

php
// Increase threshold
'beast_threshold' => 80,  // Was 50

// Shorten TTL
'cache_ttl' => 1800,  // Was 3600

// Add to blacklist
'beast_blacklist' => [
    '/news/*',  // Frequently updated
]

Not Aggressive Enough ​

Symptoms: Low cache hit rate, many cache misses

Solution:

php
// Decrease threshold
'beast_threshold' => 30,  // Was 50

// Add to whitelist
'beast_whitelist' => [
    '/blog/*',
    '/category/*',
]

// Increase time window
'beast_time_window' => 7200,  // Was 3600

Next Steps ​

Released under the GPL-3.0 License · Privacy & legal