PHP-Seiten cachen mit PEAR-Caching
10 11 2008Wenn man ganze Seiten die mit PHP erzeugt wurden cachen will kann man die PEAR-Bibliothek verwenden. Dort gibt es eine Klasse “CACHE” mit der sich einfach die komplette Ausgabe einer Webseite cachen lässt.
Benötigt wird:
PEAR-Cache (LINK)
Da die neue Version von PEAR-Cache wohl anders funktiniert als die von mir beschriebene, könnt Ihr hier die von mir behandelte Version runterladen. Damit sollte es hinhauen.
Einfach die Dateien in ein Verzeichnis “Cache” entpacken. Ausserdem ein weiteres Verzeichnis “cache” anlegen, in dem die Cache-Dateien gespeichert werden.
Will man eine komplette Seite zwischenspeichern, kann die Klasse wie folgt nutzen:
Am Anfang der PHP-Datei einfach folgenden Code setzen:
<? require_once ('Cache/Output.php'); $opts = array('cache_dir' => '/absoluter/pfad/zu/ordner/cache'); $cache = new Cache_Output('file', $opts); $cache->fileLocking=true; $id = $cache->generateID($_SERVER['REQUEST_URI']); if(!$content = $cache->start($id)){ ?> HIER KANN DER KOMPLETTE SEITENINHALT FOLGEN <? $cache->endPrint(20000); } else { echo $content; exit(); } echo $content; ?>
Das ganze funktioniert wie folgt:
Per require_once wird die nötige Klasse eingebunden. Unter ‘cache_dir’ wird das zu nutzende Cache-Verzeichnis angegeben. Dann wird eine neue Klasse instanziert (new …). Per ‘fileLocking’ wird die Cache-Datei schreibgeschützt, damit sie nicht mehrmals geöffnet werden kann.
Interessant wird es bei ‘generateID’. Anhand dieser frei generierbaren ID wird geprüft ob eine Cache-Version der Datei vorliegt oder ob die Seite neu geladen wird. In der Regel kann man hier den Dateinamen bzw. die Datei-URL benutzen. Vielleicht auch noch in Verbindung mit gesetzten Variablen oder Cookie-Infos.
Am Ende wird dann die gecachte Version ausgegeben. Mir ‘endPrint’ kann man der Klasse mitteilen nach wievielen Sekunden die Cache-Version der Datei verfallen soll und auf jeden Fall einen neue Dateiversion geladen werden soll.
Weitere Infos zum Thema:
http://openbook.galileocomputing.de/php_pear/03_0_caching-002.htm






In der aktuellen Version von “PEAR-Caching” gibt es die Datei PEAR.php nicht mehr. Weißt du wie ich das Script nun anpassen muss? Denn in der Datei Cache.php ist “require_once ‘PEAR.php’;” (Line 21) noch vorhanden. Was aber natürlich dann zu einem Fehler führt.
ich hab des selber problem wie daniel. warum ist da keine pear.php datei? und es wär ganz cool wenn man neue kommentare per mail abonieren könne
Oben im Text ist jetzt ein Link zu der Version, die ich hier benutzt habe. Wie die neue Version funktioniert weiss ich leider noch nicht. Mir fehlr auch die Zeit mich damit jetzt auseinander zu setzen. Probiert es mal mit dieser Version.