Publicado el 25 de Abril del 2020
494 visualizaciones desde el 25 de Abril del 2020
5,5 MB
53 paginas
Optimizar un WordPress
Miles de visitas por segundo a poco precio
www.wpbarcelona.com - @WPBarcelona
¿Quiénes somos?
Ernesto Gámez
@ernestogamezgo
SysAdmin
www.kisslab.com
Javier Casares
@JavierCasares
Founder & CTO
www.geenapp.com
¿Cuántas visitas tienes?
¿Más de 100 visitas/día?
¿Más de 1.000 visitas/día?
¿Más de 10.000 visitas/día?
¿Más de 100.000 visitas/día?
Ronda de “trucos”
- No almacenar historial de entradas
define ('WP_POST_REVISIONS', false);
- Vaciar la papelera
define ('EMPTY_TRASH_DAYS', 7);
Efecto Menéame
¡Alarma! ¡No va nada!
1. Acceso y análisis
2. Replanteamiento de todo (¡es una basura!)
3. Se hacen bien las cosas
4. Todo funciona, porque somos los mejores.
¿Y cómo lo hemos hecho?
¿Qué es lo que #$*& un WordPress?
1. Los plugins
2. Las plantillas
3. La mala configuración del servidor
...y me atrevería a decir que en ese orden.
Ronda de “trucos”
- Activar el Gzip de WordPress desde las
Opciones...
/wp-admin/options.php
...allí busca el parámetro [gzipcompression] y lo
pones a “1”.
La Herramienta
Web Page Test es LA HERRAMIENTA.
- Tenemos el gráfico en cascada donde
podemos ver todo lo necesario, además de
otras herramientas añadidas e indicadores...
Un ejemplo, con un blog sencillo.
Web Page Test
Web Page Test
Premisas
- WordPress simple (no MU / MS -o sí-)
- Gastar poco dinero en servidores
- Saber un poco de tecnología
- Pedir ayuda de un “sysadmin” cuando sea
necesario
Dominios y DNS
¿Dónde registro un dominio?
- Siempre en un registrador oficial
- A mi me gusta DonDominio
¿Dónde configuro las DNS?
- Es preferible un sistema escalable
- A mi me gusta Route 53 de Amazon
Dominios y DNS
Dos dominios
- Principal para “dinámicos”
- Secundario para “estáticos”
TTL DNS
- Dominio Principal, 1 hora es correcto
- Dominio Secundario, 1 día es correcto
Infraestructura
¿Qué hosting mínimo puedo necesitar?
- Puedo hacer el tonto y montar un blog en un
hosting compartido… ;)
… aunque probablemente vaya fatal porque no
puedes optimizar prácticamente nada.
Infraestructura
¡Montemos un VPS para nosotros solos!
Necesito una máquina con un mínimo de:
- 1 CPU
- 1 GB de RAM
- 20 GB de disco
Infraestructura monolítica
- MySQL (Oracle, Percona, MariaDB)
- Apache / nginx
- PHP
Todo en una misma máquina. Si algo va mal
cuesta saber qué es lo que falla.
Infraestructura distribuida
- MySQL (Oracle, Percona, MariaDB)
- Apache / nginx
- PHP
Siempre separar primero la base de datos.
Infraestructura distribuida cacheada
- MySQL (Oracle, Percona, MariaDB)
- Apache / nginx
- PHP
- web-proxy / caché / memcached...
(Pros) Nginx vs (Contras) Apache
Nginx
Apache HTTP
- Arquitectura por
eventos.
- Agrupa procesos por
N solicitudes.
- Arquitectura por
procesos.
- Crea N procesos por
N solicitudes.
(Pros) Nginx vs (Contras) Apache
- Bajo consumo de
memoria en páginas
estáticas.
- Extremadamente
rápido sirviendo
contenido estático.
- Consumo medio por
crear N procesos.
- Peor rendimiento al
servir contenido
estático.
(Contras) Nginx vs (Pros) Apache
- La configuración se
puede complicar
mucho.
- Muchas opciones de
configuración.
- Poca o escasa
documentación
- Mucha
documentación.
(Contras) Nginx vs (Pros) Apache
- Pocos componentes
añadidos.
- Muchas
funcionalidades.
- Más ligero por
defecto.
- Exceso de
funcionalidades
precargadas.
Hosting
¿Dónde pongo mi sitio web?
- Alojamiento Bueno, Bonito y Barato
- Alta disponibilidad
- Buena conectividad
- Posibilidad de ser distribuido
Hosting
¿Qué te recomendamos?
- Windows Azure
- WordPress.com
- WPengine.com
- ...
Hosting
Azure
Azure
1 CPU (1 Ghz)
768 MB RAM
1 CPU (1.6 Ghz)
1.75 GB RAM
30 GB HDD
30 GB HDD
WordPress.com
WPengine Personal
10 GB HDD
10 e/mes
28 e/mes
70 e/año
25 e/mes
CDN… ¿es necesario?
- Por norma general no es necesario un CDN
- JetPack viene con un CDN gratis: Photon
- Te puedes montar tu pseudo-CDN, que
también escala dinámicos.
Dominios para estáticos
Ajustes -> Multimedia -> Subida ficheros
- Carpeta: /wp/wp-content/uploads/
- URL completa: http://staticdomain.com/
Si subimos una imagen quedará como:
http://staticdomain.com/imagen.jpg
Varnish
sub vcl_fetch {
if (req.url ~ "\.jpg$") {
set beresp.ttl = 60s;
}
}
Purgar Caché mediante Ban por linea de
comandos o bien con el Plugin de Casares.
Bloque de Varnish para WP
sub vcl_recv {
if (req.url ~ "^/wp-admin/css/" || req.url ~ "^/wp-admin/images/" || req.url ~ "^/wp-
admin/js/") { return(lookup); }
if (req.url ~ "^/wp-(login|admin)" || req.url ~ "preview=true") { return(pipe); }
set req.http.Cookie = regsuball(req.http.Cookie, "comment_author=[^;]+(; )?", "");
set req.http.Cookie = regsuball(req.http.Cookie, "comment_author_email =[^;]+(; )?",
"");
set req.http.Cookie = regsuball(req.http.Cookie, "comment_author_url =[^;]+(; )?",
"");
if (req.http.Cookie ~ "wordpress_logged_in_") { return (pass); }
if (req.url ~ "^/xmlrpc.php") { return(pipe); }
if (req.url ~ "^/wp-config.php" || req.url ~ "^/readme.html") { return(error); }
}
eurocopa.com
verano 2012
Día 1
- 1 Base de datos (MySQL Percona)
- 1 Apache para estáticos (imágenes, etc…)
- 2 Apache para WordPress
- 2 Varnish (1 estáticos, 1 dinámicos)
La web transmite, en texto, en tiempo real los partidos.
Caché máxima de 1 minuto.
Día 2
- 1 Base de datos (MySQL Percona)
- 1 Apache para estáticos (imágenes, etc…)
- 4 Apache para WordPress
- 2 Varnish (1 estáticos, 1 dinámicos)
Parece que es suficiente… ¿seguro?
Primer partido de España
- 1 Base de datos (MySQL Percona)
- 1 Apache para estáticos (imágenes, etc…)
- 5 Apache para WordPress (1 para “admin”)
- 2 Varnish (1 estáticos, 1 dinámicos)
¡EMERGENCIA!
Siguiente partido de España
¡Y petó todo!
Qué: el kernel de Linux no soporta todas las conexiones
concurrentes que tenemos. WTF!
Porqué: la mayoría de Linux viene pensado para
conexiones de módem a 56 kbps.
Cómo: hay que reconfigurar el kernel para dar soporte a
muchas conexiones concurrentes.
Ya tenemos la infraestructura...
...ahora toca escalar el software y, sobre todo,
los ¡malditos plugins!
Para ello analizaremos el rendimiento con el
P3 (Plugin Performance Profiler)
P3
P3
P3
P3
P3
Plugins Generales
- Real IP
- WP Mail SMTP
- Hide Admin Bar from Non-Admins
- WordPress HTTPS (SSL)
Plugins “Minify”
- WP Minify
- WP Minify Fix
- Better WordPress Minify
Plugins “Asincronía”
- Lazy Load
- Infinite-Scroll
Plugins Monitor SQL
- Query Monitor
- Debug Queries
Cachea, distribuye y mejora la BDD:
- HyperDB
Plugins Imágenes
- WP Smush.it
- Regenerate Thumbnails
- EWWW Image Optimizer
- CW Image Optimizer
- Imsanity
- Hammy
Plugins nginx
- Nginx
- Nginx Cache Controller
Plugins memcached
- Memcached Object Cache
- Batcache
Recuerda volver a ejecutar P3
- Principalmente cuando haya actualizaciones
del núcleo de WordPress
- Si se actualiza algún plugin de los
complicados, ¡pásalo!
Las cachés (del servidor/navegador)
- ETag vs. Last-Modified
Principalmente para estáticos.
- Expires vs. Cache-Control
Principalmente para dinámicos.
Las cachés de WordPress
- W3 Total Cache
- WP Super Cache
- Quick Cache
- Hyper Cache
- WP Fastest Cache
- WP Fast Cache
… y otros tantos más
Gracias
ernestogamez.es | javiercasares.com
Comentarios de: Optimizar un WordPress (0)
No hay comentarios