O WordPress é uma plataforma faminta por recursos, ele é capaz de derrubar até o mais sólido servidor se não estiver configurado de forma a utilizar CPU e memória de forma inteligente.
Nesse artigo vamos ver algumas dicas, fora do feijão com arroz habitual, que irão fazer sua instalação dar um salto em qualidade e velocidade.
Antes de começar, copie o código abaixo e cole no arquivo footer.php do seu tema, ele irá dizer quantas chamadas seu blog faz ao banco de dados quando uma página é carregada, e quantos segundos isso demora para acontecer.
<?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?>
O objetivo é baixar o numero de chamadas ao menor possível. Aqui no site a página inicial faz 9 chamadas (ou queries) ao banco de dados e as indivuais 14.
1. Tema
Alguns temas para WordPress são verdadeiros sumidouros de recursos, principalmente os que funcionam no estilo revista. Eles costumam utilizar um script chamado Timthumb, que gera as imagens de forma automática. Automática e destruidora, já vi vários desses temas que fazem mais de 100 chamadas ao banco de dados para gerar uma página.
Instale um tema mais leve ou livre-se de todos os widgets que geram imagens dessa forma, ao menos nas páginas indivuais, que costumam ser as mais visitadas.
2. Widgets
A imensa maioria dos temas têm widgets habilitadas, que facilitam a vida, mas também consomem recursos. Adicione os códigos da barra lateral manualmente ao tema, dá um pouco de trabalho mas vale a pena.
3. Plugins
Livre-se de todo e qualquer plugin que não seja essencial ao funcionamento do blog. Eu tenho 10 plugins instalados, sendo que 1 é o Akismet e 2 são de cachê.
Textos relacionados são interessantes, mas os plugins que os geram não. Utilize o Linkwithin, que gera apenas uma chamada ao banco de dados e olhe lá.
4. Cachê
WP Supercache
Um bom plugin de cachê é indispensável. Eu já testei vários e hoje em dia não abandono o WP Supercache por nada. O plugin atingiu um estágio de extrema estabilidade e raramente falha.
No entanto, é preciso configurá-lo de forma eficiente. Marque as opções de acordo com o print abaixo.
Você deve ter notado que a compressão de arquivos foi desabilitada. Ela aumenta a velocidade de carregamento do blog mas, ao contrário do que muitos pensam, aumenta o consumo de CPU ao invés de reduzi-lo, já que é uma tarefa a mais para o servidor na hora de gerar as páginas.
DB Cache Reloaded
O WP Supercache é eficiente, mas como gera arquivos estáticos, esses precisam ser eliminados de tempos em tempos, para não sobrecarregar o servidor.
O problema é aquele momento, que acontece de tempos em tempos, em que o cachê fica vazio e o banco de dados é exigido ao extremo.
Para esses momentos, instale o DB Cache Reloaded, que faz cachê do banco de dados, evitando que o mesmo seja muito exigido nessas horas.
A versão disponível no repositório de plugins gera um bug em alguns servidores, utilize a versão do link abaixo, da qual eu já removi os arquivos problemáticos.
Configure o tempo de expiração do cachê para 1440 minutos, equivalente a 24 horas. Faça isso na madrugada, para que o esvaziamento coincida com o momento de menor tráfego no site.
5. Comentários
O melhor sistema de comentários ainda é o nativo do WordPress. Eu pensava que sistemas como o Intense Debate ou Disqus economizavam recursos, mas estava errado. Testei ambos e qualquer um deles acrescenta no mínimo 10 chamadas ao banco de dados.
6. Banco de Dados
Sempre faça backup da base de dados antes de fazer qualquer alteração. Se você não sabe fazer um backup manual, siga essas dicas do Viamão Lotado.
Revisão de Posts
As versões mais recentes do WordPress tem o recurso de salvar várias versões do mesmo artigo, inchando de forma impressionante o banco de dados.
1. Desative o recurso.
Acrescente o código abaixo ao seu arquivo wp-config.php:
define('WP_POST_REVISIONS', false);
2. Livre-se das revisões salvas.
Execute o código abaixo no seu banco de dados, peça à sua hospedagem que o faça se você não souber como lidar com isso.
DELETE FROM wp_posts WHERE post_type = "revision";
Tabelas Não Utilizadas
Muitos plugins deixam tabelas e mais tabelas no banco de dados quando são desabilitados. Esses dados não são utilizados mas ficam atrapalhando.
O plugin Clean Options gera uma relação de todas essas tabelas inúteis e dá a você a opção de removê-las seletivamente. Lembre-se de desinstalar o plugin após a utilização.
7. Imagens
Hospede todas as imagens estáticas do blog em um servidor à parte. Por estáticas eu quero dizer aquelas imagens que aparecem em todas as páginas do blog, como logos, banners e afins.
Use um servidor confiável que permita hotlink. Uma alternativa gratuita é criar um blog no Blogger, desabilitar a indexação do mesmo pelos sites de busca e utilizá-lo para hospedar essas imagens.
Se você quiser ser mais radical ainda, verifique nas estatísticas quais são suas páginas mais visitadas e faça o mesmo com as imagens que aparecem nelas. Por mais visitadas eu quero dizer com mais de 50 pageviews por dia.
8. PHP
Cada vez que algum recurso é chamado com tags em php, seu banco de dados e exigido. Sempre que possível, substitua as chamadas por html.
O css de um tema geralmente é chamado da forma mostrada a seguir…
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
… que pode ser substituido por…
<link rel="stylesheet" href="http://seublog.com/wp-content/themes/tema/style.css" type="text/css" media="screen" />
Para saber o caminho correto em seu tema, basta observar o código fonte de uma página aberta no navegador.
Várias outras chamadas podem ser feitas dessa forma, a mostrada acima foi apenas um entre vários exemplos.
Para saber o que pode ou não ser utilizado dessa forma, utilize como regra o fato de que tudo que não muda pode ser gerado de forma estática. Isso quer dizer que você não pode substituir as tags de título, geração de conteúdo etc.
Se você gosta de radicalizar, não utilize chamadas do tipo <?php get_header(); ?>, <?php get_sidebar(); ?> ou <?php get_footer(); ?> nas páginas mais visitadas, geralmente as indivuais e a principal, geradas pelos arquivos single.php e index.php, respectivamente. Ao invés disso, substitua os códigos pelo conteúdo dos respectivos arquivos.
E você, tem alguma dica interessante?
Estou executando suas dicas, mas quando ativo o Super Cache da os seguintes avisos:
You should change the permissions on E:\home\mundoredond\Web/wp-content and make it more restrictive. Use your ftp client, or the following command to fix things:chmod 755 E:\home\mundoredond\Web/wp-content/
e
Mod rewrite may not be installed!
It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use half-on mode.
Sabe o que seria e como pode ser resolvido?
O primeiro aviso significa que seu servidor está muito exposto, é preciso mudar as permissões para 755, via ftp.
Modo rewrite precisa ser habilitado no servidor, ente em contato com sua hospedagem sobre isso.
2. Livre-se das revisões salvas.
Execute o código abaixo no seu banco de dados, peça à sua hospedagem que o faça se você não souber como lidar com isso.
DELETE FROM wp_posts WHERE post_type = “revision”;
——————————————-
O suporte da minha hospedagem disse que não tem como fazer isso. Que teria que por na “programação php” pra ele executar. Procede?
Só o que posso dizer é que sua hospedagem é um lixo, a julgar pela resposta que lhe deram. Livre-se dela.
Desde a ultima sexta feira que meu blog esta suspenso por utilização ilegal de recursos, estou aguardando a leberação dele para efetuar estas dicas e permanecer no ar, sem ter que migrar para um servidor dedicado.
Para quem quer execute o código:
DELETE FROM wp_posts WHERE post_type = “revision”;
Sem consultar o suporte da hopedagem sugiro o plugin wp-dbmanager.2.50 que executa o código no BD, testei em um outro blog e funcionou perfeitamente, limpou todos os revisions e ainda faz otimização e backup do banco de dados.
[Fica a dica.]
O quê??? Usar o Blogger para hospedar as imagens de um blog no Wordpress???
Noronha, meu caro, O Jânio ficaria intrigado!
Claro que não ficaria, o objetivo é usar o blogger como ferramenta invisível =) .
Ótimas dicas. parabéns.
Post superinteressante, juro que estou tentando. Agora, essa história de apagar as tabelas órfãs do WP… o medo de mandar pro espaço coisas importantes está falando mais alto.
Se fizer um backup da base de dados pelo php admin não há problema, qualquer coisa é só importar que volta tudo ao que era antes.
Mas é bom descompactar antes e conferir se o tamanho do backup bate com o informado no php, só para garantir.
Estou testando o [W3 Total Cache] novo, que tem uma configuração de Cache em Disco, depois de um tempo com o [Hyper Cache+Widget Cache] e [1blogcacher+Widget Cache]
Gostaria de saber se você testou algum destes que eu citei antes dessa combinação [WP-SuperCache+DB Cache Reloaded]
Valeu pelas dicas, estão bem claras do porque serem seguidas.
O W3 eu não conheço ainda, valeu a dica. As outras duas combinações eu já utilizei e o desempenho foi inferior no servidor que eu utilizo.
Não me dei bem com o W3, mas o Widget Cache é ótimo. Nos comentários estou usando o Google FriendConnect, basta adicionar o JS sem qualquer chamada ao banco de dados, deixando o cache estático das páginas válidos por muito mais tempo, a única desvantagem é os comentários ficarem no sistema do Google e não no próprio banco de dados.
Uso tbm o WP-Supercache-Plus que usa o Memcache(ou APC ou XCache) para salvar os dados na memória e não no disco.
eu tenho que seguir vàrias dessas dicas, mas tenho muito medo de fazer besteira.
Mobile support eu nao posso usar sai uma mensagem para mexer no htaccss
Para ativar o suporte de celular tem que colocar half on
Quando eu insiro esse define(‘WP_POST_REVISIONS’, false); fica aparecendo no meu header
Você deve ter colocado o código fora da tag de início do php, que começa com
< ?php, coloque abaixo dedefine('WP_CACHE', TRUE);que não deve haver problema.O plugin delete revision (Link) é muito bom para excluir aquelas revisões do wordpress. Acho que vale a pena mantê-las e excluí-las de tempos em tempos. As vezes são bem úteis.
Ótimas dicas! As relacionadas as requisições ao bd eu realmente preciso implementar.