Tutorial WordPress: como otimizar e aumentar o desempenho do seu blog ou site

Dicas, truques e macetes de como acelerar e turbinar a velocidade de carregamento do seu blog/site em poucos minutos usando os arquivos: .htaccess, wp-config.php, phpMyAdmin e alguns plugins indispensáveis para quem trabalha no mundo encantado dos blogs.
Dica 1: xHTML+CSS válidos, otimizados e limpos
Seu tema/layout pode ser um dos principais vilões para o alto consumo de CPU e para toda a lentidão do seu site. Ao contrário do que parece, é muito simples ajustar o melhor tema para servir seu site baseado em WordPress, para isso basta seguir as seguintes regras básicas:
1.1. Otimize de forma satisfatória todo o seu conteúdo xHTML e CSS. Explico: utilize sempre uma folha de estilo (style.css) simples, compacta e, de preferência, comprimida, com ID e Class empregados da forma correta. Use o CSS Compressor para fazer o trabalho sujo pra você. E aproveitando a oportunidade, faça o mesmo com os arquivos JavaScript.
1.2. Utilize sempre CSS Sprites para suas imagens. Entenda que carregar uma única imagem grande ainda é melhor e mais rápido que carregar várias imagens pequenas, já que neste processo será realizado apenas uma requisição HTTP. Aproveite também para comprimir ao máximo suas imagens sem que elas percam qualidade. Use o Smush.it e seja feliz!
1.3. Por falar em requisições HTTP, fique atento à quantidade delas em cada página, pois quanto mais requisições, mais lento seu site vai carregar. O mesmo serve para as requisições PHP dinâmicas e o uso exagerado de plugins e chamadas externas.
1.4. Quanto aos plugins para WordPress, estabeleça certas prioridades para cada um dos que você usa. Plugins de estatísticas e de popularidade são os campeões em sobrecarregar o banco de dados e aumentar o consumo de CPU, consequentemente.
1.5. Todo mundo sonha em ter um site com design bonito, mas um layout deste tipo geralmente usa muitas imagens, muitos recursos extras e demora segundos eternos para ser carregado. Isso, invariavelmente, afasta os visitantes que vem dos mecanismos de busca que desejam apenas a informação ali contida e não toda a sua elegância e extravagância. Pense um pouco, leia o que o Janio Sarmento escreveu no ViaMãoLotado e veja se é realmente necessário ter um site com tempo de carregamento longo.
Dica 2: Template tags com caminhos absolutos
Ao invés de usar as template tags para requisitar chamadas no banco de dados, substitua-as por caminhos absolutos/estáticos, como por exemplo:
bloginfo('atom_url') // http://dominio.com/feed bloginfo('charset') // UTF-8 bloginfo('html_type') // text/html bloginfo('name') // Nome do site bloginfo('pingback_url') // http://dominio.com/xmlrpc.php bloginfo('rss2_url') // http://dominio.com/feed bloginfo('stylesheet_url') // http://dominio.com/wp-content/themes/tema/style.css bloginfo('template_url') // http://dominio.com/wp-content/themes/tema bloginfo('url') // http://dominio.com bloginfo('version') // Versão do WordPress wp_title() // Título do blog |
Dica 3: Hospedando todas as imagens de seu blog/site em um sub-domínio
Transferindo todas as imagens do seu domínio principal (ex: dominio.com) para um sub-domínio (ex: images.dominio.com) você estará aumentando o poder de carregamento de suas páginas web, já que cada domínio, por padrão, só carrega dois arquivos simultaneamente.
Após criar o sub-domínio, você precisa congigurar o WordPress para que, a partir deste momento, todo upload seja realizado diretamente para images.dominio.com. Para isto, basta ir em Configurações e clicar em Mídia, conforme ilustrado a seguir:

Para as imagens que ainda estão hospedadas no domínio principal, mais precisamente na pasta wp-content/uploads, será necessário realizar uma migração completa, via FTP ou Shell, para o sub-domínio, já que o WordPress não vai mais reconhecer este local. Também será necessário atualizar o novo caminho em todos os posts antigos via phpMyAdmin. Para isso, basta selecionar seu banco de dados no menu lateral e clicar na aba SQL.
Na caixa branca que acabou de aparecer diante de seus olhos, cole o código abaixo e clique em Go (Executar):
UPDATE wp_posts SET post_content = REPLACE(post_content,'http://www.dominio.com/wp-content/uploads/','http://images.dominio.com/') |
Agora precisamos atualizar os links da biblioteca de imagens rodando mais um comando SQL, da mesma forma acima, mas com o código abaixo:
UPDATE wp_posts SET guid = REPLACE(guid,'http://www.dominio.com/wp-content/uploads/','http://images.dominio.com/') |
Por fim, será necessário avisar ao Google que você trocou o caminho que ele conhecia para chegar até suas imagens. Cole o código abaixo em seu arquivo .htaccess:
RedirectMatch 301 ^/wp-content/uploads/(.*)$ http://images.dominio.com/$1 |
A dica também é válida para as imagens do seu tema/layout para WordPress. Para isso basta salvar todas no mesmo sub-domínio ou em um outro qualquer de sua escolha.
Aproveite para ler mais dicas sobre CDN no excelente artigo do J. Noronha n’O Fim da Várzea.
Dica 4: Configurando corretamente o plugin WP Super Cache
Apesar de existir vários outros plugins para cache, o mais comum, o mais tradicional e o mais eficaz é, sem dúvida, o WP Super Cache. Abaixo seguem alguns hacks úteis para ajustar o melhor desempenho desta poderosa ferramenta:
4.1. Na página de configuração, ative a opção ON WP Cache and Super Cache enabled.
4.2. Logo abaixo, marque a caixa Cache Rebuild.
4.3. Em Preload Cache, marque a caixa Preload mode.
4.4. Habilite a opção Super Cache Compression.
4.5. Em Expiry Time & Garbage Collection ajuste o tempo para 1800 segundos.
4.6. Pronto!
Dica 5: Criando cache para o MySQL com o DB Cache Reloaded
Mais uma dica valiosa do Janio da PortoFácil.net é o uso do plugin DB Cache Reloaded para ajudar o seu banco de dados respirar mais aliviado nos horários de pico. Até suas técnicas SEO vão agradecer!
Dica 6: Troque o Apache pelo Nginx
O servidor web Apache sempre tem crise de soluços justamente na hora que os blogs e sites mais precisam dele. Uma solução rápida seria usar o Nginx, o mais rápido, robusto e leve web server disponível hoje no mercado.
Dica 7: Otimizando o arquivo wp-config.php
Apesar de pouco difundido, outra forma de aumentar o desempenho ou a velocidade de carregamento de um blog/site é adicionando as famosas configurações extras no arquivo wp-config.php, pois desta forma as várias requisições que o WordPress faz no banco de dados já ficam pré-carregadas, diminuindo o uso desnecessário dos recursos vitais do sistema.
Para começarmos, abra o seu wp-config.php no editor de sua preferência e adicione os itens:
7.1. Endereço do blog
define('WP_HOME', 'http://dominio.com'); |
7.2. Endereço do site
define('WP_SITEURL', 'http://dominio.com'); |
7.3. Caminho direto para o tema
define('TEMPLATEPATH', '/absolute/path/to/wp-content/themes/active-theme'); |
7.4. Caminho direto para o style.css
define('STYLESHEETPATH', '/absolute/path/to/wp-content/themes/active-theme'); |
7.5. Configurar número de revisões de artigos para cada post
define('WP_POST_REVISIONS', 3); // 3 é a variável |
7.6. Desabilitar a revisão de artigos
define('WP_POST_REVISIONS', false); |
6.7. Configurar tempo dos salvamentos automáticos
define('AUTOSAVE_INTERVAL', 300); // em segundos |
7.8. Habilitar o cache
define('WP_CACHE', true); define('ENABLE_CACHE', true); |
7.9. Configurar tempo de expiração do cache
define('CACHE_EXPIRATION_TIME', 1800); // em segundos |
7.10. Desabilitar o cache
define('WP_CACHE', false); define('DISABLE_CACHE', true); |
Dica 8: Dando poderes ao arquivo .htaccess
O .htaccess, com certeza, é um dos arquivos essenciais para melhorar o desempenho do seu blog/site de forma satisfatória. E se for utilizado junto com todas as dicas presentes neste tutorial (guia ilustrado), você terá o prazer de ver o seu site voando.
8.1. Pré-ativando o cache
# BEGIN Expire headers ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 216000 seconds" ExpiresByType application/x-javascript "access plus 216000 seconds" ExpiresByType text/html "access plus 600 seconds" ExpiresByType application/xhtml+xml "access plus 600 seconds" # END Expire headers |
8.2. Ativar compressão GZIP em arquivos de texto, HTML, CSS, JS e PHP
mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* |
8.3. Combinando o cache com a compressão GZIP
# BEGIN Compress text files SetOutputFilter DEFLATE # END Compress text files # BEGIN Expire headers ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 216000 seconds" ExpiresByType application/x-javascript "access plus 216000 seconds" ExpiresByType text/html "access plus 600 seconds" ExpiresByType application/xhtml+xml "access plus 600 seconds" # END Expire headers # BEGIN Cache-Control Headers Header set Cache-Control "max-age=2592000, public" Header set Cache-Control "max-age=604800, public" Header set Cache-Control "max-age=216000, private" Header set Cache-Control "max-age=600, private, must-revalidate" # END Cache-Control Headers # BEGIN Turn ETags Off Header unset ETag FileETag None # END Turn ETags Off # BEGIN Remove Last-Modified Header Header unset Last-Modified # END Remove Last-Modified Header |
8.4. Bloqueando Hotlinks e Leechers com mod_rewrite
A dica abaixo é do Gilberto Knuttz do Cybervida e é essencial para aqueles que não aguentam mais serem vítimas de hotlinks e leechers folgados.
RewriteEngine on # Tem gente que bloqueia o envio do header, de repente é alguém legitimo! RewriteCond %{HTTP_REFERER} !^$ [NC] # Liberando os domínios que você permite compartilhar imagens RewriteCond %{HTTP_REFERER} !^http://(www.)?SEU_DOMINIO/.*$ [NC] # Vamos deixar que apenas o feedburner do SEU blog veja as imagens RewriteCond %{HTTP_REFERER} !^http://(www.)?feeds.feedburner.com/SEU_USUARIO.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www.)?feedburner.com/SEU_USUARIO.*$ [NC] # Aqui os leitores mais populares de feed - infelizmente nos feeds dos leechers suas imagens aparecerão RewriteCond %{HTTP_REFERER} !^http://(www.)?google.com/reader/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www.)?e.my.yahoo.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www.)?bloglines.com.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www.)?netvibes.com.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www.)?newsgator.com.*$ [NC] # Edereço da imagem pela qual você quer substituir RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ http://ENDEREÇO_COMPLETO_DA_SUA_IMAGEM [R,NC] |
8.5. Desabilitar navegação por pastas e diretórios via browsers
# Disable directory browsing Options All -Indexes |
Dica 9: Otimizando a instalação do WordPress via WP-DBManager (phpMyAdmin)
Outra forma eficaz de melhorar o desempenho do seu banco de dados é fazer a reparação e a otimização de todas as tabelas nele contidas. A seguir vou mostrar como realizar este processo usando o plugin WP-DBManager. Veja os passos:
9.1. Faça download do WP-DBManager e ative-o.
9.2. No menu Database, selecione Repair DB e clique em reparar.
9.3. Selecione agora o menu Optimize DB e clique em otimizar.
9.4. Pronto!
Dica 10: Escolha uma hospedagem decente e competente
Hospedagem tem aos montes por aí. Mas aquela que lhe estende a mão e te dá todo o tipo de suporte necessário, pode contar nos dedos.
Sou suspeito pra falar e indicar, já que sou cliente – e amigo – do Janio Sarmento, mas pra mim a PortoFácil é a mais completa hospedagem de servidores dedicados e virtuais disponível hoje no mercado brasileiro. Outra opção excelente para hospedagem compartilhada é a ViaHospedagem do também amigo Daniel Becher.
Como instalar o WordPress no Mac OS X usando o MAMP (Apache, MySQL e PHP)
Conheça os melhores hacks para .htaccess e WordPress
Truques de como proteger seu blog WordPress com segurança
Redirect 301 com htaccess, PHP e ASP sem perder visitas – Dicas e Tutorial
CPA Brasil: o melhor e mais lucrativo programa de afiliados do Brasil
Aprenda como criar uma conta no Twitter – TUTORIAL PASSO-A-PASSO
Como cancelar SMS de propaganda da Vivo, Claro, Oi e TIM
Qual jogo de futebol é melhor: FIFA 2013 ou PES 2013? Cheats e manhas
Cartão BNDES: como funciona? Empresas, financiamento e banco emissor
Calcular financiamento de veículo: simulador de taxa de juros e valor da prestação
Guia de compras no Paraguai: pesquisa de preços, lojas e produtos
As melhores sugestões de presentes criativos para homens e mulheres
Ivete Sangalo vs Claudia Leitte: Quem é a melhor cantora do Brasil?
Tweets that mention Tutorial WordPress: como otimizar e aumentar o desempenho do seu blog ou site – celsojunior.net — Topsy.com
Publicado em 14/07/2010 às 13:28 [+]
[...] This post was mentioned on Twitter by Nick Ellis, Pedro Villalobos, J. Sarmento OFICIAL and others. J. Sarmento OFICIAL said: Lembram quando eu disse que meu tutorial definitivo estava longe de ser definitivo? Então… http://j.mp/bG16KN [...]
Tutorial WordPress: como otimizar e aumentar o desempenho do seu blog ou site
Publicado em 14/07/2010 às 15:57 [+]
[...] post: Tutorial WordPress: como otimizar e aumentar o desempenho do seu blog ou site [...]
wp-popular.com » Blog Archive » Tutorial WordPress: como otimizar e aumentar o desempenho do seu blog ou site – celsojunior.net
Publicado em 14/07/2010 às 21:38 [+]
[...] Continue reading here: Tutorial WordPress: como otimizar e aumentar o desempenho do seu blog ou site – celsojunior.ne… [...]
Lauro Adriano | ZackShinra
Publicado em 23/07/2010 às 12:24 [+]
Muito bom, não deu para fazer todas as dicas pois uso o sistema multi sites do WordPress. Mas deu para implementar muita coisa.
Obrigado.
Eder
Publicado em 23/10/2010 às 12:57 [+]
Olá Celso. Parabéns pelo post. Muito bom. Dei uma reviada nas minhas configuações. Apenas um passo me deixou na dúvida.
Na configuração do wp-config, você habilitou o cache: (‘WP_CACHE’, true); e apó suma linha desabilitou novamente.
É isso mesmo?
Obrigado.
Um abraço.
celsojunior
Publicado em 27/10/2010 às 14:51 [+]
Oi, Eder!
Ali eu só estava ensinando como habilitar e desabilitar o cache. A maioria das pessoas gostam de trabalhar com cache, mas alguns ainda preferem sem cache.
Abraço.
Leonardo Rodrigues
Publicado em 25/05/2011 às 13:31 [+]
Celso, como gerencio meu site (xhtml+css+jquery) utilizando o wordpress???
Abner SS
Publicado em 24/12/2011 às 15:55 [+]
Nossa muito bom me ajudou muito a melhorar a velocidade do meu site!
Sílvio
Publicado em 05/05/2012 às 17:59 [+]
Sou leigo em códigos e a dica dos MySQL foi exatamente o que eu precisava para outra necessidade..
Obrigado a toda a equipe