Werden alle Optionen bei jeder Anforderung in den Speicher geladen?


25

Werden alle Optionsvariablen aus der Datenbank abgerufen und bei jeder Anforderung in den Cache geladen?

Antworten:


24

Mehr oder weniger. Wenn der get_optionAufruf erfolgt, führt WordPress eine aufgerufene Funktion aus wp_load_alloptions, die entweder eine zwischengespeicherte Kopie aller automatisch geladenen Optionen abruft oder alle diese Optionen in den Cache lädt. Dann wp_load_alloptionsgibt einen Array aller Optionen automatisch geladen. Wenn Ihre Option automatisch geladen wird (angegeben, wenn Sie die add_optionFunktion verwenden), wird sie Teil dieses Arrays und wird zurückgegeben.

Wenn Ihre Option nicht automatisch geladen wird, sucht WordPress im Cache nach dieser Option und gibt den Wert zurück, wenn er vorhanden ist. Wenn dies fehlschlägt, müssen Sie als letzten Fallback die Datenbank aufrufen, den Wert abrufen, den Cache festlegen und ihn dann zurückgeben.

Wird keine Option gefunden (z. B. der Optionsname war ungültig), speichert WordPress den Namen dieser Option in einem zwischengespeicherten Array mit dem Namen notoptions. Wenn nachfolgende Aufrufe der Nicht-Option vorgenommen werden, überprüft WP zuerst das Array notoptions, damit keine Zeit für die Suche nach etwas verschwendet wird, das nicht vorhanden ist.

Wenn Sie get_optionmehrmals pro Seite anrufen möchten, sollten Sie dies nicht tun. WordPress speichert den Optionswert nach dem ersten get_optionAufruf zwischen, unabhängig davon, ob er automatisch geladen wird oder nicht.

Überprüfen Sie die Quelle, umget_option zu sehen, was los ist.


3

Nein,

Nur die Optionen, die speziell mit Autoload geladen wurden, sind auf true gesetzt

Siehe http://codex.wordpress.org/Function_Reference/add_option

Wenn es sich also um eine Option handelt, die auf jeder Seite benötigt wird, setzen Sie beim Hinzufügen zur Datenbank autoload = true.

Danach benutze get_option einfach wie gewohnt - wp übernimmt den Cache usw.


1
WP übernimmt das Caching unabhängig vom Autoload.
Chrisguitarguy

0

Ja,

Autoload muss nicht auf yes / true gesetzt werden. Es ist standardmäßig auf yes gesetzt: http://codex.wordpress.org/Function_Reference/add_option - letzter Funktionsparameter ($ autoload):

Soll diese Option automatisch von der Funktion wp_load_alloptions () geladen werden (legt die Optionen bei jedem Laden der Seite im Objekt-Cache ab)? Gültige Werte: Ja oder Nein. Voreinstellung: ja

Wenn Sie den Wert auf no setzen, wird die Option nicht in den Cache gestellt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.