Fragmentamento de cache aumentando consultas de database

Ao implementar o cache de fragments em um site wordpress usando a técnica descrita aqui: http://css-tricks.com/wordpress-fragment-caching-revisited/ Eu achei que parece aumentar as consultas.

Agora coloquei muitos fragments na página, e (no meu ambiente local) recebo 294 consultas em 0.764 segundos (calculado com get_num_queries() e timer_stop(0) ).

Um trecho que coloquei em cache é o menu. Se eu remover o cache de fragments dele, recebo: 292 consultas em 0.736 segundos.

Se eu remover o cache de fragments da minha pesquisa em: 290 consultas em 0.862 segundos.

E se eu remover mais consultas: 287 consultas em 0.783 segundos.

Então, o que está acontecendo aqui? Fragmentar o cache está definitivamente funcionando, mas está tendo um efeito positivo? Além disso, está certo ter realmente mais consultas com cache de fragments do que sem?

Em functions.php eu tenho:

 function fragment_cache($key, $ttl, $function) { if ( is_user_logged_in() ) { call_user_func($function); return; } $key = apply_filters('fragment_cache_prefix', 'fragment_cache_').$key; $output = get_transient($key); if ( empty($output) ) { ob_start(); call_user_func($function); $output = ob_get_clean(); set_transient($key, $output, $ttl); } echo $output; } 

Na minha página de publicação

 ID, WEEK_IN_SECONDS, function() { ?>   

No meu menu:

  'primary' ) ); }); ?> 

Solutions Collecting From Web of "Fragmentamento de cache aumentando consultas de database"

Você está usando API transiente que funciona armazenando dados na tabela wp_options por padrão. Isso significa que consultas de database adicionais serão realizadas para definir o transiente e para obter o transiente. Com seu código, o número de consultas deve ser menor para os usuários não logados nas segundas e subseqüentes visitas quando o transiente existe e é válido.

Se você usa um plugin de cache persistente (ou você configura o cache persistente por conta própria), a API transiente usará WP_Object_Cache, permitindo que os dados em cache sejam armazenados na memory em vez de database, portanto, não haverá consultas adicionais de database.

Resumo : o uso de funções do wp_cache armazenará dados em cache na memory e não é persistente por padrão. Por outro lado, a API transitória é persistente sempre e usa o database por padrão. Se você configura o cache persistente, a API transiente e WP_Object_Cache retornam os mesmos resultados que a API transiente usará WP_Object_Cache .