Optimizando WordPress con Varnish y W3 Total Cache

Este tutorial sigue Instalar WordPress en la nube de Amazon, que muestra cómo optimizar su sitio con el almacenamiento en caché.

Si usted es anfitrión de WordPress, es recomendable implementar algún tipo de solución de almacenamiento en caché. Si desea ejecutar su blog en una micro instancia económica en Amazon Cloud (AWS) o si espera que su blog obtenga escalas significativas o picos de tráfico, el almacenamiento en caché será fundamental para administrar el rendimiento. El almacenamiento en caché también puede ayudar a mejorar la velocidad de su página de Google, lo que afecta su clasificación en los motores de búsqueda.

Según el tráfico de su sitio y la complejidad de su tema de WordPress, el rendimiento puede ser bastante lento en AWS. Mi recomendación es combinar el uso del Caché de Varnish de código abierto con el complemento gratuito W3 Total Cache (W3TC). 

Varnish es un caché que almacena copias de páginas para usuarios que no han iniciado sesión (la mayoría de los lectores no). Cuando las solicitudes llegan a su servidor, Varnish devuelve estas páginas preconstruidas instantáneamente en lugar de requerir que Apache, PHP y WordPress reconstruyan la página para cada solicitud. A medida que aumenta el tráfico, la reconstrucción de cada página a través de la pila de WordPress puede, literalmente, bloquear su servidor. Más adelante, W3 Total Cache se puede configurar para precompilar regularmente las páginas de su sitio para que siempre estén listas para Barnizar.

Nota: Esta también es una buena razón para considerar un complemento de comentarios externos como Disqus en lugar de los comentarios integrados de WordPress.. El JavaScript Disqus es cacheable. Si sus comentaristas inician sesión en su sitio de WordPress, el almacenamiento en caché se utilizará con menos frecuencia y su escalabilidad para sus visitantes más activos se reducirá considerablemente.

El poder de Barniz es dramático cuando el interés en su sitio aumenta. He ejecutado exitosamente mi propio sitio con esta configuración usando una pequeña instancia de Amazon por aproximadamente $ 14.95 al mes, manejando exitosamente muchas apariciones en BoingBoing, Slashdot et al.

Si desea obtener más información sobre el almacenamiento en caché, sus beneficios y W3TC, lea la introducción de Ahmad Awais al almacenamiento en caché.. 

Instalación de caché de barniz

Varnish Cache es un módulo de almacenamiento en caché para Linux. Configuraremos Varnish para escuchar el tráfico HTTP (web) en el puerto 80 con Apache escuchando solo a Varnish en el puerto 8080. Cuando Varnish necesita una página para crearla manualmente, pasará la solicitud al puerto 8080 de Apache..

Esto puede ser un poco confuso al principio, pero sí, esencialmente estamos moviendo a Apache detrás de escena. Barniz actuará como puerta de entrada en el puerto 80 para todas sus solicitudes web. Apache actuará en un rol de apoyo para Varnish en el puerto 8080. No hay tráfico público en el puerto 8080, solo solicitudes privadas de Varnish. Si tiene curiosidad acerca de cómo se relaciona esto con los grupos de seguridad de AWS, no es necesario abrir el puerto 8080.

Para empezar, necesitamos instalar Varnish en nuestra instancia:

sudo apt-get install barniz

Edite el archivo ports.conf de Apache para escuchar en el puerto 8080:

sudo nano /etc/apache2/ports.conf

Esto es lo que debería ser:

Escuchar 8080

Edite el archivo de configuración del sitio de Apache para responder al puerto 8080:

sudo nano /etc/apache2/sites-available/wordpress.conf

Cambie la línea VirtualHost de *: 80 a *: 8080

Es posible que deba cambiar el sitio predeterminado de Apache para escuchar en el puerto 8080 o deshabilitarlo:

sudo a2dissite 000-default

Mueva los archivos de configuración originales de Varnish a su directorio de inicio como copias de seguridad (en caso de que decida revisarlos más adelante):

sudo mv / etc / default / varnish ~ / default-varnish-old sudo mv /etc/varnish/default.vcl ~ / varnish-default-vcl.old

Reemplace la configuración por defecto de Varnish con el archivo disponible aquí en gist. Puedes usar copiar y pegar. 

sudo nano / etc / default / barniz

Luego, reemplace la configuración de Varnish VCL con el archivo gist aquí (de nuevo copie y pegue).

Advertencia: puede obtener errores de VCL cuando intente reiniciar Varnish si no mantiene correctamente los saltos de línea al pegar. Los saltos de línea pueden ser difíciles de detectar, así que repáselos con cuidado. Si hay errores al reiniciar Varnish, es bastante bueno decirle qué número de línea debe mirar.

sudo nano /etc/varnish/default.vcl

Ahora, vamos a reiniciar Apache y Barnizar:

reinicio de sudo apache2 reinicio de sudo reinicio de barniz

Recuerde, si recibe errores de VCL en este punto, puede deberse a saltos de línea rotos por pegar en el archivo Varnish default.vcl.

Visite su sitio en http://yourdomain.com y todo debería comenzar a trabajar con Varnish. La segunda vez que cargue una página estática, debería ser significativamente más rápida.

Instalar W3 Total Cache 

W3 Total Cache es un excelente complemento de WordPress. Es gratis y proporciona una tremenda optimización del rendimiento para su sitio. Puede obtener más información sobre W3 Total Cache en su sitio de complementos.

Ingrese a su página de administración de WordPress en http://sudominio.com/wp-admin usando el nombre de usuario y la contraseña que configuró durante la configuración. Seleccione Complementos -> Agregar nuevo en el menú de la barra lateral izquierda. Buscar W3 Total Cache.

Debido a su potencia y sofisticación, W3 Total Cache tiene una amplia variedad de configuraciones que pueden parecer abrumadoras. A continuación, proporciono algunas configuraciones recomendadas que facilitan el inicio.

No te sientas abrumado. Comience con la configuración general que se muestra a continuación y vaya desde allí. Si estás interesado en comenzar más rápido., He proporcionado instrucciones para descargar mis configuraciones predeterminadas e importarlas (se muestra más abajo).

Alternativamente, W3 Total Cache ofrece instalación y soporte de pago desde $ 150 y más. Puede acceder a ellos a través de la página del Panel de control de complementos o su sitio web. Este es un gran complemento, así que me siento bien por recomendarlos. He tenido alguna experiencia con su apoyo pagado y es generalmente bueno. También puede consultar la descripción general de la instalación de W3 Total Cache y las preguntas frecuentes en el sitio web del complemento para obtener más detalles..

En un nivel alto, recomiendo activar las siguientes configuraciones que detallamos más detalladamente a continuación:

  • Page Caché: Cachea las páginas para una carga más rápida y una entrega más eficiente (separada de Barniz).
  • Reducir Reduce y combina los archivos JS y CSS para una carga más rápida y una entrega más eficiente.
  • Caché de objetos: Acelera la generación de contenido con WordPress..
  • Caché de navegador: Etiqueta correctamente el contenido para que los clientes del navegador minimicen las descargas de páginas..
  • Proxy inverso: Indica a W3TC que elimine el caché de Barniz cuando las publicaciones, páginas, etc. se actualizan.
  • Amazon CloudFront CDN: Asegura la entrega de archivos estáticos e imágenes de forma rápida, confiable y geográfica cerca de sus visitantes.
  • Diverso: Use un archivo de índice de mapa del sitio para almacenar en la caché las páginas de alta prioridad.

Instalación de componentes de soporte

Antes de configurar W3 Total Cache, instalemos y activemos una serie de componentes de Linux que requerirá. Nuevamente, conéctese a su instancia y realice los siguientes pasos:

sudo apt-get install php5-dev php5-memcache memcached php-pear build-essential php5-tidy php5-curl apache2-dev php-apc

Edite su archivo php.ini para activar memcache:

sudo nano /etc/php5/apache2/php.ini

En la sección Extensiones dinámicas, agregue las siguientes líneas:

extension = apc.so extension = memcache.so

Dígale a Apache que active estos módulos y reinícielo:

sudo a2enmod rewrite sudo a2enmod expira sudo a2enmod headers sudo servicio apache2 reinicio

Edite su archivo wp-config.php para habilitar el almacenamiento en caché:

sudo nano /var/www/wordpress/wp-config.php

Agregue la siguiente definición de WP_CACHE sobre la línea de edición de parada:

define ('WP_CACHE', true); / * Eso es todo, deja de editar! Feliz blogging. * /

Revisión del estado de configuración

En este punto, es útil visitar el Panel de control del complemento W3TC y verificar que todos los componentes adecuados estén activos. Pero primero, debemos habilitar Fancy Permalinks para formatos de URL, lo que optimizará nuestro sitio para la indexación de motores de búsqueda. Desde el Panel de administración de WordPress, seleccione Configuración -> Permalinks, elija Día y nombre y haga clic en Guardar cambios. 

Luego, en la barra lateral izquierda, haga clic en Rendimiento -> Panel de control, luego haga clic en el botón Verificación de compatibilidad. Debería verse algo como esto:

Nota: puede ahorrar algo de tiempo si elige un tema e instala los otros complementos que planea usar antes de completar el resto del proceso de configuración de W3 Total Cache. Cambiar los temas y agregar complementos probablemente requerirá que limpie y vuelva a probar la configuración de caché total de W3.

Configuración general

W3TC generalmente funciona bien con su configuración predeterminada. Por lo tanto, primero deberemos configurar la página Configuración general y no ir a cada área de función individual.

Visita la página de configuración general de W3TC. En la barra lateral izquierda, haga clic en Rendimiento -> Configuración general. Podemos realizar una configuración de alto nivel aquí, pero también haremos configuraciones más detalladas en páginas de configuración individuales. Lo dejo (sin marcar) "Activar o desactivar todos los tipos de almacenamiento en caché (a la vez)" en el cuadro general.

Habilitar la caché de página con Opcode Alternative PHP Cache (APC):

Habilita Minify con las siguientes configuraciones. Uso el modo manual porque Minify puede romper algunos temas si tu configuración es demasiado agresiva (sin embargo, tu tema elegido puede funcionar bien):

Dejo desactivado / desactivado el almacenamiento en caché de la base de datos, ya que esto se recomienda solo si no activa el almacenamiento en caché de objetos.

Habilitar la caché de objetos:

Habilitar el caché del navegador:

Habilitar proxy inverso:

Configure W3TC para purgar regularmente el caché de barniz desde 127.0.0.1 (localhost).

Configuración de caché de página

En la barra lateral izquierda, haga clic en Rendimiento -> Caché de página. Desplácese hacia abajo hasta el cuadro de precarga de caché. Habilitar "Automáticamente la memoria caché de la página". Introduce la URL de tu sitemap. 

Nota: Necesitará tener instalado el Mejor complemento de WordPress Google XML Sitemaps antes de que esto funcione correctamente.

Si usa un CAPTCHA en los formularios de contacto, querrá incluir la ruta a estas páginas en la exclusión de caché. Cachear un CAPTCHA romperá la funcionalidad. Desplácese hacia abajo hasta el cuadro Configuración avanzada. Añade la ruta de tu archivo, por ejemplo. contactos aqui

Grupos de agentes de usuario

Debido a que mi tema es receptivo, almaceno en caché los agentes de usuarios de dispositivos móviles y tabletas por separado. En otras palabras, Varnish almacena en caché copias de varios diseños sensibles de mi sitio. Cuando un usuario móvil llega al sitio, obtiene un archivo específico en lugar de cuando llega un usuario de escritorio. Si el contenido de su sitio responde dinámicamente (por ejemplo, solo cambios en Javascript y CSS), no tendrá que hacerlo.  

Si desea hacer esto, habilite Grupos de agentes de usuario alto y bajo:

Grupos de referencia

También habilito Grupos de Referencia para motores de búsqueda:

Minimizar Configuraciones

Minify comprime su código HTML, JS y CSS y combina archivos cuando es posible. Esto acelera la entrega de sus páginas y reduce el ancho de banda. Sin embargo, a veces puede romper el código del tema.

Es posible que tenga que ajustar la configuración para el tema elegido. Encontré que al desactivar la minificación de CSS en línea, mi tema funciona bien. En la barra lateral izquierda, haga clic en Rendimiento -> Reducir:

Importación de configuraciones de ejemplo (opcional)

Si prefieres comenzar importando mi archivo de configuración, sigue estos pasos:

  1. Descargar el archivo de configuración de ejemplo
  2. Visite la Configuración general de W3TC, por ejemplo. barra lateral izquierda, Rendimiento -> Configuración general y desplácese hasta el área inferior con Importar / Exportar configuraciones (ver más abajo).
  3. Junto a Importar configuración, haga clic en Elegir archivo y seleccione el archivo de configuración de ejemplo que descargó. Luego, haga clic en subir.
  4. Explore la configuración de su W3TC y asegúrese de que tengan sentido para su sitio de WordPress.
  5. Es posible que deba personalizar la configuración de su sitio después de la importación, p. Ej. Google PageSpeed, Amazon CloudFront CDN, etc..

Usando el Amazon CloudFront CDN

Definitivamente vale la pena activar un CDN. El CDN es muy útil para reducir la carga general en su servidor. Por ejemplo, W3TC puede redirigir las solicitudes de imágenes y archivos estáticos como scripts y css a la CDN de Amazon.

Si desea hacerlo, siga las instrucciones en mi sitio para activar Amazon CloudFront. Actualmente estoy usando el método Pull (mi tutorial describe el método Push más antiguo).

Monitorear el desempeño

Hay muchas formas diferentes de controlar el rendimiento de su servidor. W3TC admite la integración con el módulo de monitoreo New Relic. W3TC ofrece un widget de panel para Google Page Speed ​​y también hay un complemento de Google Page Speed ​​para WordPress. Estos serán útiles para evaluar el rendimiento continuo de sus blogs..

Felicidades!

Ahora debe ser el orgulloso propietario de un sitio de WordPress totalmente optimizado y alojado en la nube de Amazon utilizando Varnish y W3 Total Cache. Espero que hayas encontrado útil esta serie de dos partes. Por favor, háganos saber qué funcionó bien para usted y qué no.