Überprüfe, ob du deine Optionen automatisch laden musst
Veröffentlicht: – 2 Kommentare Letzte Aktualisierung:
Standardmäßig wird eine Option, die über add_option
oder update_option
in WordPress hinzugefügt wird, automatisch bei jeder Anfrage aus der Datenbank geladen. Das ist nicht immer das, was du möchtest. Insbesondere wenn du Optionen mit viel Inhalt hast, ist es besser, sie nur zu laden, wenn notwendig.
Hintergrund
Sowohl add_option
als auch update_option
haben einen Parameter, um das automatische Laden der Werte zu erlauben. Dieser Wert steht bei add_option
standardmäßig auf yes
und für update_option
auf null
, was wie yes
interpretiert wird. Dieser Wert repräsentiert dann automatisch den Wert der Spalte autoload
in der Datenbank-Tabelle wp_options
.
WordPress verwendet bei jedem Aufruf die Funktion wp_load_alloptions
, um alle Optionen zu laden, bei denen der Wert der Datenbank-Spalte autoload
auf yes
steht.
Größe der Optionen herausfinden
Um das Laden der Optionen zu optimieren, ist das erste, dass man prüft, ob es überhaupt notwendig ist. Normalerweise, wenn die Werte eher klein sind, gibt es keinen Grund dafür, den Wert von autoload
auf no
zu setzen, da WordPress ansonsten exklusiv für diese Option eine zusätzliche Datenbank-Abfrage absetzen müsste, solltest du die Option benötigen.
Ich würde daher die aktuelle Größe der einzelnen Optionen auflisten lassen. Das funktioniert mit dieser MySQL-Abfrage:
SELECT option_name, LENGTH(option_value) AS option_size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY option_size DESC;
Code-Sprache: SQL (Structured Query Language) (sql)
Wenn du nur die Größen der Optionen deines eigenen Plugins wissen möchtest, kannst du die WHERE
-Abfrage verwenden, beispielsweise indem du die Ausgabe für deinen option_name
beschränkst:
SELECT option_name, LENGTH(option_value) AS option_size
FROM wp_19_options
WHERE option_name LIKE '%embed_privacy_%'
AND autoload = 'yes'
ORDER BY option_size DESC;
Code-Sprache: SQL (Structured Query Language) (sql)
Beide Male erhältst du eine Ausgabe mit den Spalten des Optionsnamens und seiner Größe, wobei die Größe die Anzahl der Zeichen ist, die gespeichert sind.
Optionen auswählen, die automatisch geladen werden sollen
Wenn deine Optionen meistens benötigt werden, lade sie immer automatisch. Aber wenn deine Optionen Daten beinhalten, die teils im Frontend und teils im Backend verwendet werden, teile diese am besten in separate Optionen auf.
Wenn deine Optionen nur im Backend erforderlich sind, kann es ein guter Grund sein, sie nur manuell im Backend zu laden.
Bitte behalte stets im Hinterkopf, dass du für jede Option, die nicht automatisch geladen aber benötigt wird, eine zusätzliche Datenbank-Abfrage ausgeführt wird. Besonders für kleine Optionen wie beispielsweise boolesche Variablen gibt es keinen Vorteil, sie manuell zu laden, da die Auswirkung für eine zusätzliche Datenbank-Abfrage wesentlich höher wäre.
Option aktualisieren
Setze in deinem Code den Wert für autoload
bei add_option
und update_option
auf no
. Bei add_option
ist es der vierte Parameter, für update_option
der dritte.
Bedenke, dass der autoload
-Wert bei update_option
in der Datenbank nur geändert wird, wenn sich auch der Wert der Option selbst ändert.
Ab welcher Größe würdest du empfehlen, die Option nicht automatisch zu laden?
Ich habe keine konkrete Zahl im Kopf, aber bei mehreren tausend Zeichen würde ich mir schon Gedanken machen.