PHP-Seiten cachen mit PEAR-Caching

10 11 2008

Wenn 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


Aktionen

Informationen

5 Antworten zu “PHP-Seiten cachen mit PEAR-Caching”

3 03 2010
Daniel (22:08:06) :

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.

6 03 2010
marco (14:11:21) :

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 :)

9 03 2010
admin (10:22:13) :

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.

12 03 2010
marco (22:00:08) :

Auch in deiner Version is die Datei pear.php nicht vorhanden :(

13 03 2010
admin (12:34:35) :

Hm, stimmt! Habe ich wohl geträumt aber die Version funktioniert. Ist mehrfach im Einsatz. Hast Du es schon mal probiert? Habe jetzt leider nicht viel Zeit. Kann mich damit erst Montag wieder beschäftigen. Probier es einfach mal.

Schreib einen Kommentar

Du kannst diese Tags verwenden : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">