Índice de velocidad < 1000 con Nginx, ngx_pagespeed, PHP, W3TC

Logotipo de Nginx
Logotipo de Nginx
No hay nada más molesto que los sitios web de carga lenta - pero si usted mismo aloja WordPress (en mi caso en un servidor en la nube en JiffyBox) tiene mucho espacio para la optimización. Aquí presento algunos de ellos.
El resultado final por adelantado: para la página de inicio del blog en www.tech-blogger.net determinó webpagetest.org el 09. Noviembre de 2013 un índice de velocidad de 601 (más pequeño es mejor, más información sobre el índice de velocidad) para la "Primera Vista" y 401 para la "Vista de Repetición". Todo esto para una página normal de blog de WordPress (lightbox para fotos, 10 posts en la página de inicio, fotos para posts, Google Analytics) con un tema basado en TwentyTwelve (un poco adaptado por mí para SEO).

El software

Para no ser frenado por versiones de software anticuadas, decidí usar un servidor virtual con Debian 7.1 "Wheezy" para este proyecto. Para la Debian 6.0.8 que he estado usando hasta ahora, desafortunadamente no todos los paquetes están disponibles en las versiones que necesito. En detalle, las piedras angulares de mi configuración se ven así:

  • 3 núcleos de CPU, 2 GB de RAM, 75 GB de disco duro
  • Debian 7.2 "Wheezy"
  • Versión de Linux 3.10.13-x86_64
  • nginx 1.4.3 con ngx_pagespeed y SPDY de dotdeb.org
  • PHP 5.5.5 con Xcache 3.1.0 de dotdeb.org

MYSQL se ejecuta en otro vServer de mi proveedor anterior - el acceso a la base de datos debe hacerse a través de Internet, pero esto no es importante debido al caching. En el futuro, la base de datos también se trasladará, pero eso requiere tiempo y preparación.

Los ajustes

Con nginx, gzip y Pagespeed Ya me había ocupado de esto en el pasado - pero no me gustaba el uso del servicio de velocidad de página de Google y la redirección asociada de todas las solicitudes a través de los servidores del gigante de Internet más con el tiempo. Además, de esta manera se pierde la geolocalización de la dirección IP del servidor en Alemania (y un planificado Apoyo a SPDY no se hace más fácil). Así que después de que el software mencionado arriba fue instalado, era hora de hacer los ajustes correctos. Asumo aquí que ya hay un blog de WordPress en marcha, así que PHP y Mysql están instalados correctamente, y sólo muestro sugerencias de cambios.

activar ngx_pagespeed

La ventaja del paquete Nginx de dotdeb.org es que el módulo Pagespeed ya está presente y sólo necesita ser activado. Añádelo al nginx.conf (en Debian bajo /etc/nginx/nginx.conf) en la sección "http":

...a velocidad de página;
pagespeed FileCachePath "/var/www/pagespeed_cache/"; adaptar #an propio sistema
pagespeed EnableFilters combine_css,combine_javascript; #DDos filtros de ejemplo

Ahora Pagespeed está habilitado para todos los vHosts existentes, en estos vHosts puede ser desactivado (si no armoniza con un sitio web en absoluto) o ajustado en consecuencia - este último es mi objetivo. Primero los ajustes generales que deben ser usados para cada vHost que debe usar nix_pagespeed. Añade estos en los bloques de "servidor" de los respectivos vHosts:

1TP3Pagespeed
ubicación ~ "\.pagespeed\N-([a-z]\N-? [a-z]{\a6}[^.]{\a6}[^.]{\a6}[^.]+" {\a6} {\a6}[a-z]\N-[}]
ubicación ~ "^/ngx_pagespeed_static/" { }
ubicación ~ "^/ngx_pagespeed_beacon$" { }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
location /pagespeed_console { allow 127.0.0.1; deny all; }

Ahora a los ajustes específicos usando los filtros. Tienes que intentarlo un poco, no todos los filtros funcionan con todos los Javascript/CSS, en mi caso, por ejemplo, "defer_javascript" hizo que la caja de luz dejara de funcionar y las imágenes simplemente se cargaron en una nueva página - no es agradable. Al final, terminé con el siguiente conjunto de filtros:

1TP3Filtro de velocidad de página
pagespeed XHeaderValue "Pagespeed en kadder.de powered by Nginx
pagespeed EnableFilters insert_dns_prefetch;
pagespeed EnableFilters lazyload_images,recompress_images,rewrite_images,convert_jpeg_to_progressive;
pagespeed EnableFilters move_css_to_head;

W3TC - Instalar WordPress Total Cache

En interacción con XCache puedes W3TC realmente hacer un buen uso de ella. Pero también aquí hay que tener cuidado de que las funciones no se superpongan o se ejecuten dos veces. Por ejemplo, es mortal dejar que el CSS que el W3TC minificado fue editado por Pagespeed - tienes que decidir qué herramienta usar. Pero para qué sirve el W3TC: para aumentar el caché del navegador en consecuencia, eliminar las cookies de los archivos estáticos y almacenar las solicitudes de bases de datos, objetos y páginas en el XCache (que debería ser de al menos 128 MB, de lo contrario puede atestarse incluso con un simple blog como éste). El W3TC puede ser instalado fácilmente a través de la gestión de plugins de WordPress, después hay que copiar algunos ajustes en la configuración respectiva de vHosts para que todo funcione.

Compatibilidad con WordPress nginx

La mayoría de los manuales de WordPress se refieren a Apache. Pero decidí usar Nginx, porque este servidor es "más ligero" que el Apache y convence con una velocidad muy alta. Para facilitar un poco el uso de WordPress, se recomienda instalar el plugin "nginx Compatibility". Esto se puede hacer a través de la búsqueda de plugins, no debe irritarte el hecho de que la página de plugins esté en ruso.

WordPress SEO por Yoast

No es un tema directo para la actuación, pero no intentas conseguir un blog especialmente rápido y no quieres brillar con los motores de búsqueda. Una herramienta que funciona sin problemas incluso con las medidas mencionadas aquí: WordPress SEO por Yoast. Las funciones de este plugin ciertamente irían más allá del alcance de este artículo 🙂

Conclusión y perspectivas

Con medidas relativamente sencillas pude aumentar la velocidad de visualización de mi blog de forma significativa. El mayor obstáculo es probablemente un servidor propio o el software adecuado en un espacio web alquilado. Como se mencionó al principio, veo otra importante "etapa de expansión", a saber, el uso de SPDY. SPDY es una alternativa HTTP/1.1 y funciona sólo sobre conexiones SSL (pedí un certificado para ello, pero desafortunadamente no se terminó durante el fin de semana). A través del uso de SPDY debería ser capaz de reducir los tiempos de carga en otro ~20 por ciento - Tengo curiosidad. Si todavía tiene pensamientos básicos sobre este tema, es bienvenido a compartirlos aquí - seguiré tratando de entregar mis páginas lo más rápido posible, y esto debería ser en el interés de todos los usuarios de Internet.

Deje una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *