“Tunando” o WordPress para sites de alta visitação
Israel Cefrin - WordCamp Porto Alegre - Julho 2013
Agenda 1 Visitação e performance2 Cache e plugins
PáginasBanco de DadosObjetos (widgets)
3 Dividir e OtimizarCDN com manipulação de ImagensAPI Transient e Cache de MenusWP-CRON
4 Servidor aceleradoAceleradores HTTPMariaDB
Visitação e performance
350
$ htopVerificando o Load average
Cache e plugins
Otimizar desempenho, não aumentar a carga.
2. Cache e pluginsSimplicidade, rapidez e sem necessidade programar.
Páginas - WP Super CacheBanco - DB Cache Reloaded FixObjetos - Widget Cache
2.1. WP Super Cache
.PHP sempre é processadousar em mod_rewritecoletar o lixo “por fora”
Caching de Páginas
2.2. DB Cache Reloaded Fix
guarda queries executadasalivia o mysql de consultas repetitivas
Caching de Banco
2.3. WP Widget Cache
preserva os widgetsexpiração independente entre objetos
Caching de Objetos
Dividir e Otimizar
Estratégia avançada para otimização agressiva
3. Dividir e OtimizarAprimorando a solução modularmente e mexendo em código
JetPack - CDN e manipulação de Imagens Menus - Transient APIWP-CRON - domando like a boss
3.1. JetPack
Distribuição em servidores (CDN)Manipulação de imagem por demanda0800 (gratuito)
CDN e Plugin de manipulação de imagens
3.1. JetPackExemplos de uso
http://dominio.com.br/wp-content/uploads/2013/07/imagem.jpg
http://i0.wp.com/dominio.com.br/wp-content/uploads/2013/07/imagem.jpg?resize=100,100
http://developer.wordpress.com/docs/photon/api/
3.2. Menus - Transient APIAcelere o WordPress fazendo cache de menus
function getThemesMenu(){ $menu = get_transient('cfMenu'); if (false === $menu) { // parameter echo will return the menu instead of echoing it $menu = wp_nav_menu( array( 'theme_location' => 'primary', 'echo' => 0 ) ); set_transient('cfMenu', $menu, 60*3); } return $menu;}
function updateMenu(){ delete_transient('cfMenu');} add_action( 'wp_update_nav_menu', 'updateMenu' );
http://www.codeforest.net/wordpress-transients-api-caching-benchmarks
3.3. WP-CRONPor que ele existe?
WP projetado para ambientes hostisDisparar automaticamente tarefas
3.3. WP-CRONEfeitos colaterais
Race ConditionSobrecarga no servidor
3.3. WP-CRONComo domar?
Desativar o wp-cron no wp-config.php
define('DISABLE_WP_CRON', true);
Reative no cron do servidor (linux)
* * * * * /usr/bin/wget http://www.dominio.com/wp-‐cron.php?doing_wp_cron -‐O /dev/null > /dev/null 2>&1
Servidor acelerado
Velocidade máxima no servidor
4. Servidor acelerado
Aceleradores HTTP MariaDB
4.1. Aceleradores HTTP
VarnishNginX + Apache + WP Super Cache
4.1. Aceleradores HTTP
NginX é o webservserApache é um proxyPáginas em cache (HTML) servidas da memóriaNão há processamento PHP ou MySQLAcesso a disco é mínimo
NginX + Apache + WP Super Cache
4.2. MariaDB
DataBase opensourceTotalmente compatível com MySQLUtiliza XtraDB (evolução do InnoDB)Desempenho superior ao MySQL
Otimizando a solução
JETPACK
WP-CRON TRANSIENT
Plugins
Servidor
NginX
Apa
che
MariaDB
ReferênciasCache
wordpress.org/plugins/wp-widget-cache/
wordpress.org/plugins/wp-super-cache/
wordpress.org/plugins/db-cache-reloaded-fix/
janio.sarmento.org/365posts-acelere-seu-wordpress-fazendo-cache-dos-
menus.html
portofacil.net/ajude-o-cache-do-wordpress-a-ajudar-seu-site.html
CRON
portofacil.net/domando-o-wp-cron-php.html
JETPACK PHOTON API
developer.wordpress.com/docs/photon/api/
Perguntas?@israelcefrin +israel.cefrin
fb: /israelcefrin