WordPress Autoptimize Cache läuft voll

StartWild gebloggtWebentwicklungWordPress Autoptimize Cache läuft voll

Das Plugin Autoptimize für WordPress ist wirklich eine geniale Erweiterung, denn sie hilft Dir dabei den HTML-Code sowie die CSS und JavaScript Dateien zu optimieren (Stichwort Minify). Auch verfügt Autoptimize über einen eigenen Cache und eine Vielzahl von weiteren Spielereien die Dir dabei helfen sollen Dein WordPress zu beschleunigen. Kurzum gesagt handelt es sich bei diesem Plugin um eine wirklich gute Lösung (und ja ich habe auch die „Konkurrenzplugins“ getestet), die ich Dir daher nur wärmsten empfehlen kann.

Wo Licht ist gibt’s in der Regel aber auch Schatten. Denn ein kleines Problem haben die Modulentwickler bei dieser Erweiterung nicht bedacht. Nach einer bestimmten Zeit läuft nämlich der integrierte Cache voll. WordPress meckert anschließend, dass der Autoptimize Cache zu groß sei und man diesen leeren müsste. Tut man das nicht, so kann sich die Performance gegebenenfalls spürbar verschlechtern. Um dieses Problem erst gar nicht aufkommen zu lassen, benötigt man einen CronJob der regelmäßig den Cache leert … Diese besagte Funktionalität wurde aber bei der Entwicklung des Plugins leider verschlafen, weshalb auch immer.

Für diesen CronJobs gibt es nun mehrere Ansätze. Solltest Du bei einem Webhoster gelandet sein, bei dem man irgendwelchen Shell Kommandos per CronJob ausführen lassen kann, so kannst Du einfach ein Kommando a la rm -rf /pfadzurwordpressinstanz/wp-content/cache/autoptimize/* hinterlegen. Das ist der elegante Weg, klappt aber eben nicht bei jedem Webhoster. In meinem Fall, ich hoste bei all-inkl.com, kann ich bei den CronJobs nur auf eine URL (also ein PHP File), verweisen.

Aber auch das stellt kein all zu großes Problem dar, denn Du kannst einfach ein kleines Snippet von mir verwenden, welches beim Aufruf das Cache-Verzeichnis leert:

<?php
    /*
     * Klasse mit einer Methode um ein Verzeichnis zu leeren und zu löschen.
     * Damit kannst Du beliebige Verzeichnisse entfernen, nicht nur die für
     * das WordPress Plugin autoptimize.
     */

    class cache {
        function removeDirectory($directory)
        {
            foreach(glob("{$directory}/*") as $file)
            {
                if(is_dir($file)) {
                    recursiveRemoveDirectory($file);
                } else {
                    unlink($file);
                }
            }
            rmdir($directory);
        }
    }

    /* Irgendeine Pseudoprüfung, falls der Dateiname bekannt ist
     * Hier kannst Du dir natürlich auch etwas kreativeres überlegen.
     * Für den ersten Moment reicht das aber.
    */
    if(htmlspecialchars($_GET["secret"]) == 'BLUB') {
        /*
         * Definition des Pfas zu autoptimize. Diesen findest Du in den
         * Autoptimize Einstellungen im WordPress Backend.
         */
        $path = '/pfadzurwordpressinstanz/wp-content/cache/autoptimize/';

        $autoptimize = new cache;

        // Remove CSS directory
        $autoptimize->removeDirectory($path.'css');

        // Remove JS directory
        $autoptimize->removeDirectory($path.'js');
    }

    else {
        /*
         * Weiterleitung, falls der richtige Key nicht als URL Parameter
         * vorhanden ist.
         */
        header('Location: http://www.alexander-steireif.com/');
        exit;

    }
?>

Das File habe ich unter maintenance.php im Hauptverzeichnis der WordPress Instanz gespeichert und rufe diese wie folgt auf: http://www.alexander-steireif.com/maintenance.php?secret=BLUB

Dadurch ist die erste Hürde geschafft, sprich Du hast eine Datei die beim Aufruf über den Browser das JS und CSS Verzeichnis von Autoptimize löscht. Damit Du die URL aber nicht immer manuell aufrufen musst, solltest Du im nächsten Schritt einen entsprechenden CronJob anlegen.

Wie das im Detail geht hängt ganz stark vom Webhoster ab. Denn jeder Webhoster bietet im Prinzip seine eigene Verwaltungsoberfläche. Sollte es Dich aber auch zu all-inkl.com verschlagen haben, öffne das KAS (Kundenadministrationssystem) und klicke im linken Menü auf Tools -> CronJobs und klicke anschließend auf CronJob anlegen. Hier kannst Du anschließend relativ easy den CronJob anlegen, Du musst nur die URL hinterlegen und Dich für einen Ausführungsinteverall entscheiden (1 Mal pro Woche reicht meiner Meinung nach).

Anlage eines CronJobs bei all-inkl.com

Wenn Du nun auch diese letzte Hürde genommen hast, bist du am Ziel angekommen. Du hast erfolgreich eine (recht primitive) PHP Datei erstellt, welche die Autoptimize Cache Verzeichnisse beim Aufrufen löscht und somit das regelmäßige Volllaufen des Caches verhindert.

 

5 thoughts on “WordPress Autoptimize Cache läuft voll

  1. Servus – Vielen Dank für die Beschreibung. Kann ich nicht einfach auch im Plugin selbst „Änderungen speichern und Cache leeren“ drücken ? Das wäre dann manuell aber sollte funktionieren oder ?

  2. Hallo,
    bin auch bei all. inkl. und würde dein Vorschlag gerne umsetzen verstehe aber nicht alles,
    was hier beschreiben steht. Vor allem, wo gebe ich etwas ein?
    Du einfach ein Kommando a la rm -rf /pfadzurwordpressinstanz/wp-content/cache/autoptimize/* hinterlegen. Wo kann ich das hinterlegen?
    /* Irgendeine Pseudoprüfung, falls der Dateiname bekannt ist
    * Hier kannst Du dir natürlich auch etwas kreativeres überlegen.
    * Für den ersten Moment reicht das aber.
    gemeint ist.
    Was gebe ich für Pseudoprüfung (BeispieL) ein und wo?

    Schritt für Schritt Anleitung wäre klasse, finde ich aber im ganzen Netz nicht. Jeder geht davon aus, dass der Leser schon versteht, was wie wo hin muss.

  3. Hallo hier bin ich wieder,
    natürlich hat sich niemand auf meinen Kommi gemeldet, wie auch, wenn der Blogger keine Ahnung von den Dingen hat, über die er für Geld schreibt.
    Und so ist das hier überall, von so Leuten hast du nichts zu erwarten,
    Solltest du mit dem Gedanken spielten, dir einen WordPress Blog anzulegen. Höre auf mich, mach es nicht, es ist die Hölle. Die tollen Kommis sind gekauft und unecht.
    Du glaubst mir nicht, dann jage die Seite hier mal durch PageSpee inside und dann siehst du, was optimiert ist. Nichts, gar nichts!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.