Content-Cache-Ausgabe PEAR-Cache
Als Nächstes beginnen wir mit der Erkundung häufiger verwendeter Caching-Technologien, was auch der Schwerpunkt dieses Artikels ist. Zuerst verwenden wir das Cache-Paket in PEAR. PEAR kann Inhalte in Dateien, Datenbanken oder im Speicher zwischenspeichern. Nehmen wir als Beispiel Dateien.
Hier ist ein kleines PHP-Programm, das kein Caching verwendet:
pear_content_cache1.php
<?php
echo „Das ist der Inhalt. <P>“;
echo "Die aktuelle Zeit ist" . date('MdY H:i:s A', time()) "<BR>";
?>
Das obige Programm ist sehr einfach, jetzt fügen wir Caching hinzu.
pear_content_cache2.php
<?php
require_once 'Cache/Output.php';
//Legen Sie das Cache-Verzeichnis fest, das beschreibbar sein muss $cacheDir = './pear_cache';
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
//Wenn die Nocache-Variable leer ist, verwenden Sie den Inhalt im Cache //Wenn Sie den neuesten Inhalt erhalten möchten, weisen Sie ihn zu zur Nocache-Variablen if (empty($_REQUEST['nocache']))
{
// Eine eindeutige Cache-ID erstellen // Anfrage + Cookie-Informationen $cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS) );
}
anders
{
//Wenn Sie den neuesten Inhalt erhalten möchten, ist die ID leer $cache_id = null;
}
//Überprüfen Sie, ob der Cache-Inhalt entsprechend der Cache-ID verfügbar ist, wenn ($content = $cache->start($cache_id))
{
//Der Cache existiert bereits, direkt ausgeben und das Skript beenden echo $content;
Ausfahrt();
}
// Der Inhalt existiert nicht im Cache, neuen Inhalt generieren und in den Cache schreiben echo „Das ist der Inhalt. <P>“;
echo "Die aktuelle Zeit ist" . date('MdY H:i:s A', time()) "<BR>"
// Schreibe den Inhalt in den Cache echo $cache->end();
?>
Aktualisieren Sie diese beiden Dateien jeweils und Sie werden feststellen, dass sich die Zeit in der Zeile „Die aktuelle Zeit ist“ in pear_content_cache1.php mit der Aktualisierung ändert, während sich diese Zeile in pear_content_cache2.php nicht ändert. Dies liegt daran, dass pear_content_cache2.php Caching verwendet, um den vom Benutzer angeforderten Inhalt in einer statischen Datei zu speichern. Wenn der Benutzer erneut eine Anfrage stellt, erfolgt die Ausgabe direkt aus der Datei, ohne dass ein Programm zur dynamischen Generierung des Inhalts erforderlich ist.
Für pear_content_cache2.php, wenn der Benutzer die neuesten Informationen anstelle der alten Informationen im Cache lesen möchte. Dann können Sie mit http://…/pear_content_cache2.php?nocache=1 darauf zugreifen, wodurch die Caching-Funktion deaktiviert wird. Aktualisieren Sie es und stellen Sie sicher, dass sich die Zeit entsprechend ändert.
Um die Verwendung der PEAR-Inhalts-Caching-Klasse zusammenzufassen:
1. Achten Sie beim Einbinden des PEAR-Pakets darauf, den richtigen Pfad festzulegen.
2. Enthält die Cache-Klasse in Output.php
require_once 'Cache/Output.php'
3. Legen Sie das Cache-Verzeichnis fest:
$cacheDir = './pear_cache';
bestätigen Sie, dass dieses Verzeichnis beschreibbar ist. Cache-Daten werden in Unterverzeichnisse dieses Verzeichnisses geschrieben.
4. Erstellen Sie ein Ausgabe-Cache-Objekt
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
Der erste Parameter gibt an, dass wir einen Cache verwenden, der auf der Methode "file" basiert, und der zweite Parameter ist a Cache-Array, das Verzeichnissen zugeordnet ist.
5. Generieren Sie eine eindeutige Cache-ID
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));
Hier die genericID des $cache-Objekts ( )-Methode durch Bereitstellung einer Reihe von Informationen (URL, HTTP-POST-Daten und HTTP-Cookie), um diese Anfrage eindeutig zu identifizieren und von anderen Anfragen zu unterscheiden.
6. Fügen Sie eine logische Beurteilungsanweisung hinzu, um festzustellen, ob die Cache-Daten, die der Cache-ID entsprechen, bereits vorhanden sind. Rufen Sie die Daten ab und beenden Sie das Skript.
if ($content = $cache->start($cache_id))
{
echo $content;
Ausfahrt();
}
7. Platzieren Sie den Code, der Inhalte generiert, nach der obigen logischen Anweisung und beenden Sie die Verwendung des Cache-Objekts.
echo $cache->end();
Funktions-Cache-Ausgabe-PEAR-Cache
PEAR kann nicht nur den Ausgabeinhalt zwischenspeichern, sondern auch das Ergebnis des Aufrufs einer bestimmten Funktion zwischenspeichern. Dies ist eine sehr interessante Funktion, wenn Ihr Programm eine bestimmte Funktion häufig verwendet und das Ergebnis des Aufrufs das gleiche ist. Ich empfehle Ihnen, es auszuprobieren, insbesondere wenn diese Funktion langsam läuft.
Als nächstes implementieren wir einen gepufferten Aufruf von slowFunction(), einer Funktion, die sehr langsam ausgeführt wird.
<?php
require_once 'Cache/Function.php';
$cacheDir = './pear_cache/';
$cache = new Cache_Function('file',array('cache_dir' => $cacheDir));
$arr = array('apple', 'birne', 'watermelon');
$cache->call('slowFunction', $arr);
echo '<BR>';
$arr = array('apple', 'bir', 'watermelon');
slowFunction($arr);
Funktion slowFunction($arr = null)
{
echo „Eine Funktion, die sehr langsam ausgeführt wird: ( <br>“;
echo "Die aktuelle Zeit ist" . date('MdY H:i:s A', time()) '<br>';
foreach ($arr als $fruit)
{
echo „Ich habe ein $fruit <br> gegessen“;
}
)
?>
Das Folgende ist das Skriptausführungsergebnis des Beispiels:
eine Funktion, die sehr langsam ausgeführt wird.
Die aktuelle Zeit ist 28. Juli 2004, 17:15:57 Uhr
Ich habe einen Apfel gegessen. Ich habe eine Birne gegessen. Ich habe eine Wassermelone gegessen.
Eine Funktion, die sehr langsam ausgeführt wird :(
Die aktuelle Uhrzeit ist 28. Juli 2004, 17:17:55 Uhr
Ich habe einen Apfel gegessen. Ich habe eine Birne gegessen. Ich habe eine Wassermelone gegessen.
Im Code wird die Klasse Cache/Function.php verwendet, um die Funktion Pufferfunktion auszuführen. Die Variable $cache ist ein Cache_Function-Objekt, das dateibasiertes Funktionscaching verwendet und im Verzeichnis $cacheDir gespeichert ist. Um einen Funktionsaufruf zwischenzuspeichern, sollte die call()-Methode des Cache_Function-Objekts $cache wie folgt verwendet werden: $cache->call('slowFunction', $arr);
Hier wird die slowFunction()-Funktion aufgerufen und der Parameter ist ein Array $arr. Diese Funktion wird in einer Datei im Verzeichnis $cacheDir zwischengespeichert. Bei allen nachfolgenden Aufrufen dieser Funktion wird das Ergebnis der Funktionsausführung von $cache->call() zurückgegeben. Das Funktions-Caching und die Verwendung sind dem Inhalts-Caching sehr ähnlich, daher werde ich nicht auf Details eingehen. Weitere Informationen finden Sie im PEAR-Handbuch.