Existem diferentes maneiras de tornar seu site mais eficiente: plug-ins especializados permitem armazenar páginas em cache para conteúdo HTML estático, outros permitem armazenar em cache todas as consultas SQL e dadose, finalmente, alguns permitem reduzir arquivos JavaScript e CSS e até mesmo soluções do lado do servidor.

mise-en-hide-on-wordpress

Mas mesmo se você usar esses plugins, usando métodos de em cache interno para objetos e resultados do banco de dados dados será uma boa prática de desenvolvimento, pois seu plug-in não depende de qualquer solução de cache que o usuário final tenha. Seu plug-in deve ser rápido e não deve depender de outros plug-ins para fazer o trabalho sujo. E se você acha que deve escrever seu próprio código de gerenciamento de cache, você está errado. WordPress vem com tudo que você precisa para implementar rapidamente vários em cache de dados. Você só precisa identificar as partes do seu código que se beneficiarão da otimização e escolher um tipo de em cache em conformidade.

O WordPress implementa dois métodos diferentes de armazenamento em cache:

não persistente

Os dados permanecem no cache enquanto a página é carregada. (O WordPress o usa para armazenar em cache a maioria dos resultados da consulta no banco de dados.)

Persistente

Isso depende de como o banco de dados funciona e os dados em cache podem expirar automaticamente após um certo período de tempo. (O WordPress usa-o para armazenar em cache feeds RSS, atualizações etc.).

Neste tutorial, consideraremos apenas o cache não persistente.

Como configurar o cache não persistente "Não Persistente"

Quando você usa funções como " get_posts () "Ou" get_post_meta () O WordPress primeiro verifica se os dados de que você precisa estão armazenados em cache. Nesse caso, você obterá dados do cache; caso contrário, uma consulta ao banco de dados será executada para obter esses dados. Assim que os dados forem recuperados, eles também serão armazenados em cache. Um cache não persistente é recomendado para resultados de banco de dados que podem ser reutilizados ao criar uma página.

O código de cache interno não persistente do WordPress está localizado no arquivo " cache.php "No diretório" wp-includes "e é gerenciado pelo" WP_Object_Cache " Precisamos usar duas funções básicas: " wp_cache_set () "E" wp_cache_get () Ao mesmo tempo que as funções adicionais " wp_cache_add () "," wp_cache_replace () "," wp_cache_flush () "E" wp_cache_delete () ". O armazenamento em cache é organizado em grupos, sendo que cada entrada precisa de sua chave exclusiva. Para evitar misturar os dados padrão do WordPress, usar nomes exclusivos é uma prática recomendada.

exemplos

Para este exemplo, vamos criar uma função chamada "d4p_get_all_post_meta ()", que recupera todos os metadados associados a um artigo. Esta primeira versão não inclui cache.

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    $data = array();
    $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

    foreach ( $raw as $row ) {
        $data[$row['meta_key']][] = $row['meta_value'];
    }

    return $data;
}

Sempre que você chamar essa função para o mesmo artigo, uma consulta SQL será executada. Aqui está a função modificada que usa o cache não persistente do WordPress:

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    if ( ! $data = wp_cache_get( $post_id, 'd4p_post_meta' ) ) {
        $data = array();
        $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

        foreach ( $raw as $row ) {
            $data[$row['meta_key']][] = $row['meta_value'];
        }

        wp_cache_add( $post_id, $data, 'd4p_post_meta' );
    }

    return $data;
}

Aqui usamos um grupo de cache chamado " d4p_post_meta ", E" post_id "que é a chave. Com esta função iremos verificar se precisamos de todos os dados na memória. Caso contrário, executaremos o código normal para obter dados e, em seguida, adicionaremos ao cache na linha 13. Portanto, se você chamar esta função mais de uma vez, apenas a primeira executará uma consulta SQL. Todas as outras chamadas recuperarão dados do cache. Aqui usamos a função " wp_cache_add ", Portanto, se a combinação" grupo-chave "já existir, ela não será substituída. Compare isso com " wp_cache_set O qual sempre substituirá um valor existente sem verificar.

Como você pode ver, acabamos de fazer uma pequena alteração no código existente, mas potencialmente salvamos muitas chamadas de banco de dados, o que tornou o carregamento mais rápido.

Notas importantes

O cache não persistente está disponível apenas durante o carregamento da página atual; uma vez que os próximos carregamento da página, será novamente vazia.

O tamanho do armazenamento é limitado pela memória total disponível no PHP alocada pelo servidor. Não armazene um grande conjunto de dados, ou você pode acabar com uma mensagem "Sem memória".

O uso deste tipo de cache só faz sentido para operações repetidas mais de uma vez durante a criação de uma página.

Ele funciona com WordPress desde o lançamento 2.0.

Isso é tudo para este tutorial. Espero que ajude você a armazenar melhor o cache seu blog.