web-dev-qa-db-fra.com

Toutes les options sont-elles chargées en mémoire à chaque demande?

Toutes les variables d'options sont-elles extraites de la base de données et chargées dans la mémoire cache à chaque demande?

25
rsman

Oui, en quelque sorte. Lorsque l'appel get_option est effectué, WordPress exécute une fonction appelée wp_load_alloptions, qui récupère une copie mise en cache de toutes les options à chargement automatique ou charge toutes ces options dans le cache. Ensuite, wp_load_alloptions renvoie un tableau de toutes les options à chargement automatique. Si votre option est automatiquement chargée (spécifiée lorsque vous utilisez la fonction add_option ), elle fera partie de ce tableau et sera renvoyée.

Si votre option n'est pas chargée automatiquement, WordPress recherche alors cette option dans le cache et renvoie la valeur, le cas échéant. Si cela échoue, le dernier secours consiste à accéder à la base de données, à extraire la valeur, à définir le cache et à le renvoyer.

Enfin, si aucune option n'est trouvée (par exemple, le nom de l'option n'était pas valide), WordPress enregistre le nom de cette option dans un tableau mis en cache appelé notoptions. Si des appels ultérieurs à la non-option sont effectués, WP vérifie d'abord le tableau notoptions afin de ne pas perdre de temps à rechercher quelque chose qui n'y est pas.

Si vous ne souhaitez pas appeler get_option plusieurs fois par page chargée, ne le soyez pas. WordPress mettra en cache la valeur de l’option après le premier appel get_option, qu’elle soit ou non chargée automatiquement.

Consultez la source de get_option pour voir ce qui se passe.

24
chrisguitarguy

Non,

seules les options spécifiquement chargées avec autoload sont définies sur true

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

Par conséquent, s'il s'agit d'une option nécessaire sur chaque page, lorsque vous l'ajoutez à la base de données, définissez autoload = true.

Après cela, utilisez simplement get_option normalement - wp gérera le cache, etc.

3
anmari

Oui,

Il n'est pas nécessaire de définir le chargement automatique sur yes/true. La valeur par défaut est oui: http://codex.wordpress.org/Function_Reference/add_option - dernier paramètre de fonction ($ autoload):

Cette option doit-elle être automatiquement chargée par la fonction wp_load_alloptions () (place les options dans le cache des objets à chaque chargement de page)? Valeurs valides: oui ou non. Par défaut: oui

Toutefois, si vous définissez cette option sur non, l'option ne sera pas mise en cache.

0
Toni Petrov