Performance avec autoload et la table d'options

9

Je joue avec la colonne autoload de la table options . Je n'ai pas trouvé beaucoup d'informations sur la manière dont les valeurs autoloadées sont utilisées. J'ai essayé un print_r($GLOBALS) et j'ai constaté que les options à chargement automatique sont stockées dans $GLOBALS['wp_object_cache']->cache['options']['alloptions'] .

Existe-t-il un autre moyen d'accéder à ces variables?

Supposons que je doive accéder à une option my_option , configurée pour le chargement automatique, plusieurs fois dans différents modèles (par exemple, une fois dans header.php , une fois dans footer.php ), quelle méthode est recommandée?

  1. Puis-je le récupérer dans le tableau $GLOBALS (puisque la valeur est déjà présente)
  2. Dois-je utiliser get_option('my_option') une fois et globaliser à nouveau la variable
  3. Utilisez get_option('my_option') à chaque fois (ce que je ne vois pas l'intérêt de faire)
  4. Autre chose
posée RRikesh 30.01.2013 - 13:58

1 réponse

18
  

Je n'ai pas trouvé beaucoup d'informations sur la façon dont les valeurs autoloaded sont   utilisé.

Il n'y a pas de cas particulier pour les options autoloadées, elles sont utilisées de la même manière que les autres options normales, mais nous allons comprendre ce que signifie autoload colonne de la table options . Cette colonne détermine si nous devons extraire une option au stade de l’initialisation d’une demande ou devrions-nous extraire une option uniquement à la demande.

Mais quand ce chargement automatique se produit et quelle est sa fonction? Toutes les options autoload sont chargées et mises en cache par la fonction wp_load_alloptions , appelée par la fonction is_blog_installed au début de chaque requête HTTP, gérée par WP.

Permet de résumer: l'option autoloaded est la même option, mais elle est chargée au début du traitement de la requête HTTP par WP.

  

Supposons que je doive accéder à une option ... quelle méthode est recommandée?

  1. C'est une mauvaise approche pour le récupérer directement de $GLOBALS , utilisez plutôt get_option
  2. Globaliser les variables personnalisées n'est pas la bienvenue et il est recommandé de le faire le moins possible
  3. De mon point de vue, c'est la meilleure option pour vous
  4. Même ne pensez pas à autre chose:)

Pourquoi utiliser get_option function à chaque fois est la meilleure option? Parce que:

  1. Le premier et le plus important car : vous pouvez être sûr qu'il retournera une valeur actualisée, chaque fois que vous l'appelez.
  2. Il le mettra en cache pour une réutilisation future.
  3. Cela permet à d'autres plugins et thèmes de bloquer votre option en connectant option_optionname filter.
  4. Une option sera récupérée si elle n'est pas encore chargée.
réponse donnée Eugene Manuilov 30.01.2013 - 15:16

Lire d'autres questions sur les étiquettes