O WordPress como plataforma evoluiu na última década para se tornar muito mais robusto para os desenvolvedores. Mas nem sempre foi assim.
No passado, os desenvolvedores implementavam a maior parte da lógica interna de manipulação de dados do zero. Isso levou a uma quantidade significativa de código inseguro e não testado em plug-ins e temas – geralmente copiados e colados de sites como StackOverflow.
Desde então, o WordPress introduziu algumas adições notáveis que padronizaram a interação do desenvolvedor com os componentes do WordPress. Por exemplo, Gutenberg reformulou completamente a forma como os usuários interagem com o Post Editor. A API de configurações abstrai a criação e o gerenciamento de páginas de configurações personalizadas, e a API de transientes cuida da criação e recuperação de informações armazenadas em cache.
Essas mudanças lançaram as bases para o WordPress hoje, posicionando-se como uma plataforma na qual os desenvolvedores podem confiar para construir aplicativos complexos – não apenas blogs.
Neste blog, veremos alguns exemplos de casos de uso para transientes do WordPress, entenderemos como cada função auxiliar funciona, passaremos pelas armadilhas, dicas e truques mais comuns e revisaremos alguns dos plug-ins mais comumente usados para gerenciar transientes.
Se você já se sente sobrecarregado, oferecemos soluções de hospedagem gerenciada para WordPress para que você não precise se preocupar em otimizar seu site. Examinamos exatamente o que procurar ao procurar os melhores serviços de hospedagem WordPress e também oferecemos guias sobre como o WordPress funciona para que você possa entender melhor o funcionamento interno da estrutura e possivelmente obter algumas idéias sobre como usar melhor os transientes.
O que são transitórios do WordPress?
Os transientes do WordPress são essencialmente dados armazenáveis em cache, rotulados com um nome e com um prazo de validade (pense em algo como uma versão backend de um cookie). Esses dados normalmente são armazenados em seu banco de dados (dentro da tabela), mas também podem ser configurados para aproveitar uma solução de cache de terceiros para armazená-los em seu cache de objetos (como Memcached ou Redis).
Se você quiser saber mais sobre como configurar uma solução de cache de terceiros para seus transientes do WordPress, confira este guia sobre como habilitar o cache de objetos Redis.
O que são transientes no WordPress?
Então, o que são transitórios no WordPress? Uma das necessidades mais comuns de uma solução de cache é armazenar os resultados de uma chamada de API externa, e os transientes fornecem uma maneira simples de conseguir isso.
Se uma solicitação de API não for armazenada em cache, ela poderá rapidamente se tornar um gargalo em seu aplicativo devido a tempos de resposta imprevisíveis do servidor de API. Dependendo do tamanho do seu aplicativo, você também pode começar a receber penalidades de tempo com base no número de solicitações por minuto feitas pelo seu servidor.
O WordPress permite manipular facilmente quanto tempo um transitório é armazenado e é assim que você otimiza seu aplicativo para o tráfego que ele recebe. Definir um prazo de expiração mais longo para uma chamada de API pode economizar uma quantidade significativa de solicitações potenciais, o que também reduz a carga no servidor de API.
Uma boa estratégia de cache pode ser um grande fator na melhoria dos custos gerais do servidor e no uso da largura de banda. É claro que tudo isso depende da situação do seu aplicativo e o cache não é a solução para corrigir todos os problemas de carregamento do seu aplicativo.
Se você estiver interessado em implementar estratégias de cache mais robustas em seu aplicativo, confira este guia sobre como habilitar o cache de página inteira para sites gerenciados WordPress e WooCommerce.
Fizemos um fluxograma muito simplificado para que você possa visualizar como funcionam os transientes do WordPress (e o cache em geral) para ajudá-lo a evitar chamadas de API desnecessárias.
Esse processo começa no momento em que seu aplicativo decide que precisa recuperar dados de uma API. Quando não há transitório, a solicitação da API é acionada e, como resultado, é armazenada em um novo transitório. Na próxima vez que seu aplicativo iniciar uma solicitação, o transitório existirá e conterá os mesmos dados que foram retornados originalmente pela API. Você acabou de salvar seus primeiros bytes em largura de banda! 🎉
Outro caso de uso comum envolve o armazenamento dos resultados de uma chamada complexa para ou qualquer uma de suas alternativas (como ). Como antes, criamos um fluxograma muito simples para que seja fácil visualizar como os transientes do WordPress se encaixam em vários cenários.
O processo é o mesmo. Ele começa sempre que seu aplicativo precisa executar um processo que usa o banco de dados. Se um transitório não tiver sido criado para a consulta, a consulta será feita normalmente, mas os resultados serão armazenados em um novo transitório. Na próxima vez que seu aplicativo precisar fazer uma consulta equivalente, o transitório já existirá e conterá os mesmos dados retornados da consulta original.
Como resultado, podemos tornar o fluxograma ainda mais simplificado para ajudar a visualizar como você pode adicionar transientes do WordPress ao seu aplicativo sem esforço.
A implementação de transientes do WordPress melhora a experiência do usuário final, pois não precisa esperar a recuperação das informações. Você não apenas acaba economizando dinheiro, mas também gera mais, porque tempos de carregamento mais rápidos em seu aplicativo geralmente levam a um melhor tráfego orgânico dos mecanismos de pesquisa.
Como usar os transientes do WordPress
O WordPress inclui três métodos para lidar com transientes, dependendo do ambiente com o qual seu aplicativo está trabalhando. Sem nenhuma ordem específica, aqui está a lista completa de métodos públicos da API Transient do WordPress:
As variações estão disponíveis para uso em um ambiente WordPress Multisite, mas são funcionalmente iguais às variantes fora do site.
Um transitório do WordPress precisa de três parâmetros:
1.: Um identificador exclusivo para os dados que estão sendo armazenados.
2. : Os dados que você deseja armazenar.
3. : O tempo em segundos até que os dados expirem. O padrão é 0, mas para que os transientes sejam efetivos, é maior que 0.
O único momento em que você precisa conhecer todos os três parâmetros é quando estiver criando o transitório. Depois disso, você só precisa do nome do transitório para recuperar ou excluir os dados.
Busque o transitório do WordPress
A seguir, mostraremos um exemplo real de como esses fluxogramas seriam implementados em PHP. Vamos nos concentrar em explicar a lógica do trabalho com transientes e como começar a usá-lo hoje. Não se preocupe se você não entender parte do código que verá. Não estamos interessados em como os dados são construídos. Ele existe apenas para mostrar algum contexto do mundo real em torno dos métodos da API Transient do WordPress.
Para recuperar dados de um transiente, tudo que você precisa saber é o nome do transiente. A função que procuramos é , ou se você estiver em um ambiente WordPress Multisite.
…
$ preço = (float) get_transient( ‘produto_183_preço’) ?: 300,0;
$nome = (string) get_transient( ‘book_345_name’ ) ?: ‘John Doe’;
$ variantes = (variedade) get_transient( ‘produto_183_variants’ ) ?: [];
…
Na primeira linha, estamos criando uma variável de preço convertendo o resultado de em um tipo float. Se o transitório não existir, um valor padrão será usado. Isso acontece porque se um transitório não existir, não tiver valor ou já tiver expirado, os dados retornados serão sempre um booleano falso.
O símbolo em PHP é chamado de operador ternário e é uma forma simplificada de escrever uma instrução if, onde o valor após o operador se torna o que será retornado caso o valor comparado anteriormente seja falso.
As outras duas linhas servem para demonstrar como qualquer tipo de valor pode ser usado para transientes. Estamos convertendo uma variável de nome como uma string e um array que conteria uma lista de informações. Quase tudo que pode ser atribuído a uma variável pode ser armazenado como um transitório do WordPress (mais sobre isso mais tarde).
Remover o transitório salvo
A remoção de transientes geralmente é reservada para dados que dependem de algo que está sendo ou acabou de ser removido. Por exemplo, se você acompanha o scorecard de uma pessoa em um jogo, mas ela decide parar de jogar, o rastreamento desse scorecard não é mais necessário.
… delete_transient( ‘soldado_76’ );…
Excluir um transitório é benéfico se seu aplicativo estiver constantemente criando e removendo coisas, mas um transitório é excluído automaticamente depois que o tempo passa — falaremos mais sobre isso mais tarde. Você também pode querer excluir um transitório manualmente quando, em vez de esperar que ele expire, você pode simplesmente limpar o cache do transitório para forçar a obtenção de um valor atualizado novamente.
Salvar transientes do WordPress
Para salvar um transiente, você precisa nomeá-lo, atribuir alguns dados e definir um tempo em segundos após sua criação. Os dados que você atribui não precisam ser tratados de forma alguma, e o único requisito é que o valor é serializável. Se você não tiver certeza do que isso significa, não se preocupe. Os tipos de variáveis mais comuns são serializáveis por padrão. Os dados também não precisam ter escape SQL — tudo isso é tratado pelo WordPress para você.
…
$ resposta = wp_remote_get( ‘https://example.tld/subscribers’);
set_transient(‘subscriber_count’, $resposta[‘body’]HORA_EM_SEGUNDOS );
…
Neste exemplo, estamos armazenando tudo o que vem da solicitação GET. Poderíamos também ter armazenado a variável completa porque é apenas um array, mas uma boa prática é reduzir a quantidade de informações que armazenamos em nosso cache, para que você armazene apenas o que realmente precisa.
Estamos usando. Esta é uma constante muito útil definida pelo WordPress que você pode usar em qualquer lugar dentro do seu plugin ou tema. Aqui está a lista completa de constantes relacionadas ao tempo que você pode usar:
Esteja ciente de que estes são definidos como aproximações – assume 30 e não leva em consideração anos bissextos. Se você precisar de informações precisas, considere usar ou .
Se você quiser saber mais sobre as constantes padrão definidas pelo WordPress, confira o constantes padrão.php arquivo no repositório oficial do WordPress GitHub
Expiração de transitórios do WordPress
O tempo é muito importante para que os transientes do WordPress funcionem como uma solução de cache, pois caso contrário o transiente ficará armazenado para sempre. Isso o tornaria essencialmente apenas um regular , que possui sua própria API. A expiração transitória é necessária para que o WordPress possa excluí-la após sua expiração.
Isso não é totalmente automático porque o transitório não será excluído assim que expirar. Em vez disso, ele será excluído na próxima vez que seu aplicativo for carregado após o período transitório expirar. Esta é uma limitação de como os trabalhos agendados funcionam no WordPress. Por ser uma aplicação PHP, ela só pode ser executada sempre que uma solicitação HTTP for feita ao servidor.
Uma maneira de contornar essa limitação é criar um arquivo que seja executado no nível do sistema e usá-lo para excluir transientes expirados, mas isso seria um tópico para outro artigo.
Essa limitação, entretanto, não deve impedi-lo de usar os transientes do WordPress. Como o processo de eliminação transitória ocorre antes da execução do código do plug-in ou do tema, não é crítico que o transitório seja tecnicamente depois de expirar.
Aqui está o trecho de código final onde você pode ver como tudo funciona. Esta é a representação do código do fluxograma que exploramos antes.
…
$subscriber_count = get_transient(‘subscriber_count’);
se ($subscriber_count === falso ) { # O transitório não existe ou expirou. $subscriber_count = 5;
set_transient(‘subscriber_count’, $subscriber_count, MINUTE_IN_SECONDS * 60)}
…
Para este exemplo, não definimos um valor padrão porque queremos saber se o valor de retorno é para regenerar o transitório.
A primeira vez que seu aplicativo for executado, será porque o transitório não foi criado. Em seguida, ele entrará no bloco de condição, reatribuirá a mesma variável e a armazenará.
Na segunda vez que seu aplicativo for executado, o transitório existirá. É isso que será retornado em vez de falso, evitando o condicional e continuando a lógica da sua aplicação sem qualquer refatoração importante. Estamos reutilizando o mesmo nome de variável, então podemos confiar que eventualmente ela terá os dados que precisamos.
Armadilhas e dicas para transientes
Os transientes não deveriam ser uma solução definitiva. Se seu aplicativo tiver que lidar com dados que sempre precisam de uma resposta nova, você não deverá usar transientes para acelerá-lo. Os transitórios são mais usados para dados que são mostrados diversas vezes no site ou dados que não mudam com muita frequência.
Se você estiver usando seu banco de dados como armazenamento para transientes do WordPress, há um limite de 172 caracteres no nome. Isso ocorre porque o WordPress injetará automaticamente algumas palavras-chave no nome que você passar para controlá-lo.
O valor armazenado em um transiente pode ser quase qualquer coisa, mas é recomendado que, se você precisar armazenar um valor booleano dentro de um transiente, converta-o em uma matriz ou valor inteiro usando constantes ou enumerações. Isso ocorre porque precisamos verificar se o transiente existe ou não, portanto, armazenar um valor falso causaria problemas de depuração muito difíceis.
Plugins para lidar com transientes
Gerenciador de Transientes fornece uma interface de usuário fácil para gerenciar seus transientes. Você pode pesquisar, editar e excluir transientes e até mesmo suspender a criação de transientes para ajudar nos testes e na depuração. A única ressalva para este plugin é que ele só funciona se você estiver usando seu banco de dados para armazenar transientes, então geralmente é usado apenas como uma ferramenta de desenvolvimento local.
Monitor de consultas é um plugin que, entre muitas coisas, pode mostrar quais transientes estão ativos e quais foram atualizados durante sua última solicitação HTTP. Este é um plugin muito poderoso que pode ser usado para desenvolvimento local ou para depurar problemas de desempenho.
Excluir transientes expirados é um plugin que faz o que diz. Ele adicionará um novo trabalho agendado à instalação do WordPress para remover qualquer transitório que ainda persista após sua expiração.
Experimente hospedagem WordPress com Hostinger
Embora tudo isso possa parecer assustador, agora você sabe o que são os transientes no WordPress e como e quando usá-los. Afinal, eles são uma ferramenta indispensável para a sua aplicação WordPress.
Se o seu aplicativo está começando a crescer e você acha que a implementação de transientes do WordPress não será suficiente para melhorar o desempenho do seu site, talvez seja hora de atualizar para uma solução de hospedagem WordPress totalmente gerenciada.
Na Hostinger, oferecemos uma garantia de devolução do dinheiro em 30 dias porque temos certeza de que você vai adorar, ou emitiremos um reembolso se você não gostar. Confira nossos planos de hospedagem WordPress para começar hoje mesmo.