Excluir transientes expirados

Descrição

Exclua transientes antigos e expirados da tabela de opções do WordPress (wp_options), para evitar que eles inchem seu banco de dados e até mesmo tornem seu site mais lento.

A menos que você esteja usando um cache de objetos (como o memcached), o WordPress armazena registros transitórios na tabela de opções. Muitos transientes recebem um tempo de expiração, portanto, em teoria, deveriam desaparecer após algum tempo. Na prática, como os transientes antigos só são excluídos quando solicitados novamente após expirarem, muitos transientes permanecem no banco de dados. Depois de um tempo, pode haver milhares ou até milhões de transientes expirados ocupando espaço desnecessariamente em sua tabela de opções, dependendo do que seus plug-ins estão fazendo.

Excluir Transientes Expirados agenda uma tarefa diária para excluir quaisquer transientes expirados da tabela de opções. Ele executa essa operação com uma única consulta SQL e, em seguida, executa uma segunda consulta para localizar quaisquer registros de expiração órfãos e excluí-los também.

Existem alguns outros plug-ins que limpam transientes expirados. Este foi escrito para desempenho rápido, limpeza programada do tipo “configure e esqueça” e compatibilidade máxima. Ele usa o tempo do PHP para determinar se os transientes expiraram, não o tempo do banco de dados (que pode ser diferente). Ele faz apenas um trabalho e o faz bem com o mínimo de recursos.

Agora otimizado para WordPress Multisite.

Traduções

Muito obrigado aos esforços generosos dos nossos tradutores:

Se você quiser ajudar traduzindo este plugin, inscreva-se para uma conta e aprofundar.

Contribuições

Privacidade

Delete Expired Transients não coleta nenhuma informação de identificação pessoal e não define nenhum cookie. Ele remove algumas informações antigas do banco de dados, reduzindo potencialmente a exposição de um site ao vazamento de informações de identificação pessoal.

Capturas de tela

  • Página de ferramentas para exclusão manual de transientes
  • Página de administração de rede multisite para exclusão manual de transientes

Instalação

  1. Carregue este plugin em seu diretório /wp-content/plugins/.
  2. Ative o plugin através do menu ‘Plugins’ do WordPress.

É isso! Os transientes expirados serão excluídos na próxima vez que você visitar seu site e, novamente, uma vez por dia depois disso.

Perguntas frequentes

Afinal, o que é um “transitório”?

De acordo com o Codex, os transientes são:

uma maneira simples e padronizada de armazenar temporariamente dados armazenados em cache no banco de dados, fornecendo-lhes um nome personalizado e um período de tempo após o qual eles expirarão e serão excluídos.

NB: por padrão eles são armazenados no banco de dados, mas se você tiver um cache de objetos como o memcached eles não serão.

Eu preciso deste plugin?

A maioria dos sites não precisa deste plugin. Tudo depende de quais plug-ins estão instalados e como estão sendo usados. Alguns plug-ins fazem uso intenso de transientes para melhorar o desempenho do site, e isso pode levar ao acúmulo de registros temporários antigos no banco de dados. Se sua tabela wp_options estiver crescendo e causando problemas com o desempenho do site ou backups, este plugin pode ajudá-lo, mantendo os transientes sob controle.

Por que os transientes se acumulam e preenchem minha tabela wp_options?

Com a forma atual de funcionamento da API de transientes, os transientes expirados só são excluídos quando acessados ​​após a data de expiração. Quando os transientes são específicos do usuário ou bastante únicos, eles podem permanecer no banco de dados para sempre, a menos que alguma tarefa de limpeza seja executada para limpá-los. Atualmente, o WordPress não possui essa tarefa de limpeza. É isso que este plugin faz.

Perderei algum dado importante se instalar este plugin?

Somente se você tiver um plugin muito mal escrito. Os transitórios podem ser excluídos por vários motivos, porque, por definição, são considerados efêmeros. Eles são considerados seguros para serem excluídos a qualquer momento porque supostamente conterão apenas informações que podem ser reconstruídas.

Existem algumas exceções notáveis, por ex. alguns carrinhos de compras armazenam sessões de carrinho em transientes; obviamente, esta não é uma informação que possa ser facilmente reconstruída. Esses dados só serão excluídos por este plugin se tiverem expirado, o que significa que seriam excluídos pelo WordPress de qualquer maneira, por isso é seguro usar este plugin com carrinhos de compras.

Como posso saber se está funcionando?

No menu Ferramentas do administrador do WordPress, você encontrará uma tela para exclusão de transientes. Ele informa quantos transientes expirados existem em seu banco de dados.

NB: depois de instalar e ativar este plugin, a primeira coisa que ele faz é agendar uma tarefa de limpeza para excluir transientes expirados. Isso significa que pode não haver nenhum transiente encontrado ao visitar esta página no menu de ferramentas logo após a instalação do plugin, pois eles já podem ter sido excluídos. Você provavelmente nunca precisará excluir manualmente os transientes expirados, pois eles serão excluídos automaticamente diariamente.

Preciso disso se estiver executando um cache de objetos?

Não. Caches de objetos como o memcached são conjuntos limitados de dados e já limpam dados antigos periodicamente para que possam caber nos dados mais recentes. Isso significa que os transientes antigos serão removidos do cache automaticamente. Isso também significa que novos transientes podem ser removidos a qualquer momento, e é por isso que você nunca deve armazenar nada em um transiente que não possa ser reconstruído facilmente. Consulte este artigo no blog WPEngine para obter mais detalhes: A Technical Transients Treatise.

Posso alterar a programação para funcionar com mais frequência?

Ainda não. Considerarei adicionar uma configuração para isso se parecer popular. Acho que diariamente é suficiente, mesmo para sites movimentados. Quando a rede é ativada em vários sites, ela é executada de hora em hora para garantir que possa navegar por todos os sites com frequência suficiente.

Como o plugin lida com multisite?

Se você ativá-lo em sites individuais dentro de vários sites, cada site funcionará da mesma forma que um site independente.

Se você ativar o plug-in na rede, ele funcionará de maneira diferente. Você obtém acesso a uma tela de administração mestre que permite a exclusão em massa de transientes em vários blogs em uma rede. Isso também pode ajudá-lo a identificar sites problemáticos, navegando pela lista de sites e verificando se algum deles possui um grande número de transientes. Você pode encontrar esta página de administração em Configurações no administrador da rede multisite.

A tarefa agendada também funciona de maneira diferente, agrupando sites para limpar transientes expirados uma vez a cada hora. A tarefa agendada pode ser iniciada por atividade em qualquer blog. Apenas 5 blogs são limpos em cada execução, portanto, até 120 blogs serão limpos por dia.

Observação: se o seu site tiver várias redes (por exemplo, se você estiver executando WP Multi Network), então você será necessário ativá-lo em cada rede. Cada ativação limpa apenas os blogs dessa rede, por ex. a ativação em example.com limpará blog.example.com, images.example.com, shop.example.com, mas não forum.example.net se estiver em uma rede separada no multisite.

Consultas SQL úteis

Aqui estão algumas consultas SQL úteis para executar no MySQL quando você está tentando depurar o que está acontecendo com transientes.

-- transients that are not autoloaded (should be all with expiration times)
select option_name, option_value
from wp_options
where option_name regexp '^(_site)?_transient_.*'
and autoload='no'
order by option_name;

-- transient expirations
select option_name, option_value, from_unixtime(option_value) as expiry_time
from wp_options
where option_name regexp '^(_site)?_transient_timeout_.*'
order by option_value desc;

-- transient expirations with paired transients (inc. orphans)
select t1.option_name, t2.option_name, t1.option_value, from_unixtime(t1.option_value) as expiry_time
from wp_options t1
left join wp_options t2 on t2.option_name = replace(t1.option_name, '_timeout', '')
where t1.option_name regexp '^(_site)?_transient_timeout_.*'
order by t1.option_value desc;

-- expired transient expirations with paired transients (inc. orphans)
select t1.option_name, t2.option_name, t1.option_value, from_unixtime(t1.option_value) as expiry_time
from wp_options t1
left join wp_options t2 on t2.option_name = replace(t1.option_name, '_timeout', '')
where t1.option_name regexp '^(_site)?_transient_timeout_.*'
and t1.option_value < unix_timestamp()
order by t1.option_value desc;

Avaliações

24 agosto, 2017
Just installed and left it to do its magic. After a while I checked the options table and sure enough almost all the transients had been deleted. Couldn’t ask for more.
4 janeiro, 2017
Very useful plugin! Thanks!
Leia todas as 13 avaliações

Colaboradores e desenvolvedores

“Excluir transientes expirados” é um programa de código aberto. As seguintes pessoas contribuíram para este plugin.

Colaboradores

Excluir transientes expirados” foi traduzido para 10 localidades. Agradecemos aos tradutores por suas contribuições.

Traduzir “Excluir transientes expirados” para seu idioma.

Interessado no desenvolvimento?

Navegue pelo código, consulte o repositório SVN ou assine o registro de desenvolvimento por RSS.

Registro de alterações

O changelog completo pode ser encontrado no GitHub. Entradas recentes:

2.0.7

Lançado em 19/11/2018

  • testado: WordPress 5.0