it-swarm.com.de

Wie soll wp_cache funktionieren und hilft es bei der Leistung?

Ich habe mein Widget für die letzten Kommentare codiert und $ wpdb-> get_results verwendet, und ich wollte keinen Cache verwenden, damit die Abfrage nicht bei jedem Laden der Seite ausgeführt wird. Deshalb habe ich Folgendes verwendet:

$comments = wp_cache_get('mycomments');
if ($comments == false) {
    $query = //some sql stuff
    $comments = $wpdb->get_results($query);
    wp_cache_set('mycomments', $comments);
}
//then use $comments

und ich habe WP Cache Inspect-Plugin verwendet, um zu überprüfen, ob es funktioniert. Ich habe versucht, den Wert $ expire in wp_cache_set auf zwei Arten '9999' und 9999 zu setzen, und habe den Cache zwischen den beiden Tests gelöscht, aber es scheint nicht Um für mich zu arbeiten, habe ich einen Artikel kommentiert und er wurde sofort in den letzten Kommentaren angezeigt. Es sieht also so aus, als würde die Abfrage 9999 Sekunden lang nicht zwischengespeichert. Soll das so funktionieren oder mache ich etwas falsch?

und danke im voraus.

EDIT: Ich habe den Codex überprüft, es gibt auch Transients API aber begrenzt auf 45 Zeichen, also was ist der Unterschied zwischen diesem und wp_cache? Dieser dient zum Speichern von Daten in der Datenbank.

4
Pierre

In WordPress v2.5 + ist der Objektcache nicht persistent. Es speichert Dinge im Speicher, aber für ein dauerhaftes Caching über Seitenladevorgänge benötigen Sie ein Plugin, siehe hier:

http://codex.wordpress.org/Class_Reference/WP_Object_Cache#Persistent_Caching

Alternativ können Sie auch dauerhafte Transienten verwenden. Der Bezeichner darf maximal 45 Zeichen lang sein, die an diesen Bezeichner angehängten Daten können jedoch länger sein. Beachten Sie, dass das Speichern sehr großer Datenmengen auf diese Weise nicht empfohlen wird.

4
Tom J Nowell

wp_cache_set/add-Funktionen speichern Daten für Sie, bis Sie die Daten manuell aus dem Cache entfernen oder der Cache-Collector zerstört wird, je nachdem, was zuerst eintritt.

Standardmäßig speichert WP diese Daten in einer Array-Variablen, sodass der Kollektor bei jedem Laden der Seite zerstört wird.

Denken Sie daran, den Cache nach Vorgängen zu leeren, die die abgerufenen Daten ändern. In Ihrem Fall möchten Sie für Kommentare möglicherweise den Cache leeren, wenn ein neuer Kommentar hinzugefügt wird:

add_action('comment_post', function(){
  wp_cache_delete('mycomments');
});
1
onetrickpony