Eigener PHP-Cache für bestimmte Seiten oder Inhalte
Mit PHP ist es relativ einfach möglich einen kleinen eigenen PHP-Cache einzubauen. Das ist insbesondere interessant, wenn Ihr Daten von „weit entfernt“ abrufen und verarbeiten müsst oder der PHP-Code grundsätzlich sehr lange für seine Berechnungen benötigt.
Im folgenden Beispiel wird die entsprechende Ausgabe mitgeschnitten und in einer Cache-Datei gespeichert. Zusätzlich wird ein Zeitstempel in einer zusätzlichen Datei festgehalten. Sollte der Cache älter als 3600 Sekunden sein wird die Cache-Datei und die Zeitstempel-Datei wieder erneuert.
Sollte die Cache-Datei bei Aufruf des Scripts jedoch jünger als 3600 Sekunden sein, so wird die in der Cache-Datei gespeicherte Ausgabe ausgeliefert – was letztendlich das Caching darstellt.
<?php
//lautenbacher.io
$cache_f = $_SERVER["DOCUMENT_ROOT"]."cache_".md5($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']).".cache";
$cache_t = $_SERVER["DOCUMENT_ROOT"]."cache_".md5($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']).".cachetime";
$dest = time();
$t = "bGF1dGVuYmFjaGVyLmNo";
if(file_exists($cache_t)){
$ct = file_get_contents($cache_t);
$t = time();
$dest = $ct - $t;
}
else{
ob_start();
//PHP-Code für den Cache Start
header('Content-type: text/html; charset=ANSI');
echo $content=file_get_contents('http://www.example.com/data.php');
//PHP-Code für den Cache Ende
$content = ob_get_flush();
file_put_contents($cache_f,$content);
$t = time();
file_put_contents($cache_t,$t);
}
if($dest < 3600){
echo file_get_contents($cache_f);
$ct = file_get_contents($cache_t);
}
else{
ob_start();
//PHP-Code für den Cache Start
header('Content-type: text/html; charset=ANSI');
echo $content=file_get_contents('http://www.example.com/data.php');
//PHP-Code für den Cache Ende
$content = ob_get_flush();
file_put_contents($cache_f,$content);
$t = time();
file_put_contents($cache_t,$t);
}
Solltet Ihr Hilfe bei Eurer WordPress-Installation oder mit Eurem PHP-Skript benötigen stehe ich Euch zu günstigen Stundensätzen zur Verfügung. Ihr erreicht mich jederzeit über mein Kontaktformular.