Todas as opções estão carregadas na memória em cada solicitação?

25

Todas as variáveis ​​de opções são buscadas no banco de dados e carregadas no cache em cada solicitação?

rsman
fonte

Respostas:

24

Sim, mais ou menos. Quando a get_optionchamada é feita, o WordPress executa uma função chamada wp_load_alloptions, que pega uma cópia em cache de todas as opções carregadas automaticamente ou carrega todas essas opções no cache. Em seguida, wp_load_alloptionsretorna uma matriz de todas as opções carregadas automaticamente. Se sua opção for carregada automaticamente (especificada quando você usar a add_optionfunção), ela fará parte dessa matriz e será retornada.

Se sua opção não for carregada automaticamente, o WordPress procurará no cache especificamente essa opção e retornará o valor, se estiver lá. Se isso ocorrer, o fallback final é acessar o banco de dados, buscar o valor, definir o cache e, em seguida, retorná-lo.

Por fim, se nenhuma opção for encontrada (por exemplo, o nome da opção era inválida), o WordPress armazenará o nome dessa opção em uma matriz em cache chamada notoptions. Se forem feitas chamadas subsequentes para a não opção, o WP verificará primeiro a matriz de opções, para que não perca tempo verificando algo que não existe.

Se você estiver preocupado em ligar get_optionvárias vezes por carregamento de página, não fique. O WordPress armazenará em cache o valor da opção após a primeira get_optionchamada, independentemente de ser carregado automaticamente ou não.

Confira a fonte paraget_option ver o que está acontecendo.

chrisguitarguy
fonte
3

Não,

somente as opções carregadas especificamente com o carregamento automático são definidas como true

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

Portanto, se for uma opção necessária em todas as páginas, quando você a adicionar ao db, defina autoload = true.

Depois disso, basta usar get_option normalmente - o wp cuidará do cache, etc.

anmari
fonte
11
O WP lida com o cache, independentemente do carregamento automático.
chrisguitarguy
0

Sim,

Não há necessidade de definir o carregamento automático como yes / true. É definido como yes por padrão: http://codex.wordpress.org/Function_Reference/add_option - último parâmetro da função ($ autoload):

Essa opção deve ser carregada automaticamente pela função wp_load_alloptions () (coloca as opções no cache do objeto em cada carregamento de página)? Valores válidos: sim ou não. Padrão: sim

No entanto, se você definir como não, a opção não será colocada no cache.

Toni Petrov
fonte