Auto clear Autoptimize cache before it gets too large
  • LET'S TALK!

    Fill in the form below to make an enquiry or find my contact details on my contact page.

  • This field is for validation purposes and should be left unchanged.

Freelance WordPress Developer

Auto clear Autoptimize cache before it gets too large

Autoptimize “makes optimizing your site really easy. It can aggregate, minify and cache scripts and styles, injects CSS in the page head by default (but can also defer), moves and defers scripts to the footer and minifies HTML”, thank you to the plugin authors they have done a great job in making this plugin available and free for everyone. The plugin is almost perfect but doesn’t offer a proper schedule purging mechanism. On this post you will find two different approaches to tackle this “issue”.

The code snippet below added to your theme functions .php will limit the Autoptimize cache to 256MB. Thank you to @rahulpragma to make the below snippet available

 

# Automatically clear autoptimizeCache if it goes beyond 256MB
if ( class_exists( 'autoptimizeCache' ) ) {
    $myMaxSize = 256000; # You may change this value to lower like 100000 for 100MB if you have limited server space
    $statArr=autoptimizeCache::stats(); 
    $cacheSize=round( $statArr[1]/1024 );
    
    if ( $cacheSize>$myMaxSize ) {
       autoptimizeCache::clearall();
       header( "Refresh:0" ); # Refresh the page so that autoptimize can create new cache files and it does breaks the page after clearall.
    }
}

The code snippet below added to your theme functions .php will schedule Cron job to delete the cache every week and month. This code snippet is a bit different from the above this code only cleans up the cache, it doesn’t limit the size of it.


namespace wppress;
class GarbageCollection {
    public function __construct() {
        add_filter( 'cron_schedules', function ( $schedules ) {
            $schedules['weekly'] = array(
                'interval' => 604800,
                'display'  => __( 'Once a Week' ),
            );
            $schedules['monthly'] = array(
                'interval' => 2635200,
                'display'  => __( 'Once a month' ),
            );
            return $schedules;
        });
        if ( ! wp_next_scheduled( 'wppress/garbage/clear') ) {
            wp_schedule_event(time(), 'monthly', 'wppress/garbage/clear' );
        }
        add_action( 'wppress/garbage/clear', [ &$this, 'clear'] );
    }
    public function clear()
    {
        if ( class_exists( '\autoptimizeCache' ) ) {
            /* Clear autoptimize cache once a month */
            \autoptimizeCache::clearall();
        }
    }
}
new GarbageCollection();

ABOUT AUTHOR

Nuno

Hi, I'm a Freelance Web Developer and WordPress Expert based in London with a wealth of website development and support experience. I am great at problem solving and developing quick solutions.