Mittwoch, 14. März 2007 Druck-Ansicht
Wer Probleme mit der Performance hat oder schlicht sein Blog ein bisschen beschleunigen möchte, sollte das PlugIn “PlugIn Output Cache” von Rob Marsh ausprobieren.
Wobei “ausprobieren” in diesem Fall nicht so ganz das richtige Wort ist, denn mit einem einfachen Klick ist es nicht getan: Die Caching-Funktion muss nämlich in jedes “langsame” PlugIn eingebaut werden. Aber die Arbeit lohnt sich.
Nach Installation und Aktivierung von POC_Cache stehen alle nötigen Funktionen zur Verfügung, mit denen man diverse “Ausgaben” und/oder “Rückgaben” unter einem individuellen “key” in die Datenbank speichern und wieder abrufen kann.
Auf die Weise ist es möglich, die Anzahl der Datenbank-Abfragen allzu “leistungshungriger” PlugIns auf ein Minimum zu reduzieren: Denn nur, wenn zum jeweiligen “key” noch kein Inhalt hinterlegt ist, wird das PlugIn “normal” durchlaufen, andernfalls wird das “fertige Ergebnis” hervorgeholt.
Man nehme also ein PlugIn, das für seine HTML-Ausgabe mehrere Abfragen benutzt. Beispielsweise PlugIns zur Auflistung der neuesten Kommentare o.ä.
Am Ende so ziemlich aller PlugIns steht in der Regel entweder eine direkte HTML-Ausgabe mit echo oder eine Rückgabe via return. Und dort “schaltet” man die neuen Caching-Funktionen quasi zwischen.
Aus ursprünglich beispielsweise
...
function PlugIn_Ausgabe() {
$result = get_PlugIn_Output();
echo $result;
}
wird mit “zwischengeschaltetem” Cache dann in etwa Folgendes:
...
function PlugIn_Ausgabe() {
$result = false;
if (defined('POC_CACHE')) {
$cache = new POC_Cache();
// $key = 'Name' (Bezeichnung waehlen, die eindeutig dem PlugIn zuzuordnen ist!)
$result = $cache->fetch($key);
}
if (false === $result) {
$result = get_PlugIn_Output();
if (defined('POC_CACHE')) $cache->store($key, $result);
}
echo $result;
}
Die auskommentierte Zeile mit //$key muss natürlich wieder “aktiviert” werden, hinter dem Gleichheitszeichen ist dann für jedes in dieser Weise bearbeitete PlugIn ein “eigener Name” zu vergeben.
Der ‘Name’ muss für jedes PlugIn ein eigener sein, denn sonst würden alle PlugIns ihre “Ergebnisse” ja an der selben Stelle der Datenbank hinterlegen und die selbe Ausgabe erzeugen.
Einige PlugIns brauchen nur einen “einfachen” Namen für $key - wie das genannte Beispiel “neueste Kommentare” - Denn die neuesten Kommentare ändern sich ja nicht von Beitrag zu Beitrag.
Andere PlugIns hingegen (wie z.B. “ähnliche Beiträge” etc.) erzeugen je nach Beitrag oder Kategorie unterschiedliche Ausgaben, so dass dort ein “einfacher” Name nicht ausreicht. In solchen Fällen kann man auf die ID des Beitrags zurückgreifen, um genügend eindeutig benannte und einmal vorhandene “key”s zur Verfügung zu haben.
Der “key” kann dann (je nach Bedarf) also beispielsweise so konstruiert werden:
$key = 'Aehnliche_Beitraege_zu_'.get_the_id();
Der Effekt: So müssen diverse Auflistungen, Verlinkungen, Umwandlungen etc. nur einmal erzeugt und die dazugehörigen Datenbank-Abfragen nur einmal ausgeführt werden. Ist diese Arbeit dann getan, wird bei der nächsten Ausführung des PlugIns auf den gespeicherten Wert zurückgegriffen, anstatt dass nochmals alles “durchgearbeitet” wird.
Der Aufwand ist sicherlich nicht für jedes PlugIn sinnvoll, aber manch ein Feature erweist sich dann und wann als echte “Leistungsbremse” - und da sorgt POC_Cache für effektive Abhilfe.
Es ist oftmals übersichtlicher, wenn man die Cache-Abfrage nicht direkt in die Ausgabe der PlugIns hineinfummelt, sondern aus lauter echos zunächst returns macht und in einer Output-Variable sammelt. Dann nämlich kann man die Cache-Abfrage getrennt vom eigentlichen PlugIn-Code in eine eigene Funktion schreiben, was eine eventuelle Fehlersuche erleichtert.
POC_Cache lädt zum Experimentieren ein - Man kann z.B. auch WordPress-Funktionen cachen. Um nichts am System zu verbasteln, sollte man diese Funktionen am besten “kopieren” und (umbenannt) in ein “eigenes PlugIn” speichern …
Wenn man sich ein bisschen Zeit nimmt, kann man auch damit Einiges beschleunigen.
Ebenfalls bei Rob Marsh zu finden sind die PlugIns “Recent Comments” und “Recent Posts” - Beide erlauben eine sehr flexible Gestaltung der HTML-Ausgabe - und machen (sofern installiert) auch gleich Gebrauch von den “PlugIn Output Cache”-Funktionen.
Bookmarks, Feed und Links
Wenn Ihnen dieser Beitrag geholfen hat ...
Beiträge zu ähnlichen Themen:
3 Antworten zu Blog-Tuning: Schnelleres WordPress mit PlugIn Output Cache
Kommentar schreiben