Instalar Ghost en Ubuntu 16.04 - Parte 4 - Optimización y rendimiento

Para finalizar el manual de instalación del CMS Ghost en Ubuntu 16.04, vamos a darle importancia a la optimización que podamos implementar para que la experiencia que queremos trasmitir de velocidad y simplicidad sea plena. Además, aprovecharemos que dicha experiencia también es del gusto de Goolgle ya que hace ya un tiempo incluyó en su algoritmo de búsquedas el tiempo de carga de las páginas como una de las variables para ordenar el indexado.

Comprobaciones

Antes de nada, vamos a irnos a la web de Pagespeed Insights, para ver cuáles pueden ser los posibles puntos a mejorar.

Una vez ejecutamos el test, nos dará una serie de puntos ordenados en dos pestañas, PC y Móviles, que debemos mejorar. Vienen organizados como "Should Fix", "Consider Fixing" y "Passed Rules". Como su nombre indica, el apartado "Should Fix" indica cosas que deben arreglarse que son primordiales. El "Consider Fixing" también indica cosas a mejorar, aunque no son primordiales. En todos los indicativos da una serie de pasos a seguir y recomendaciones, que podemos arreglar a mano, o a través del módulo Pagespeed para NGinx, que vamos a ver a continuación.

NGX-Pagespeed

Como cuando hicimos la instalación de NGinx la compilamos de cero para poder introducir el módulo de Pagespeed, ahora tan solo tendremos que configurarlo. Para ello nos vamos a nuestro virtual host que hemos creado en NGinx y lo editamos.

$ sudo nano /etc/nginx/sites-enabled/ghost

Y en el apartado del servidor que escucha por el puerto 443 introducimos la activación del Pagespeed y los filtros que queremos utilizar.

Configuración del módulo Pagespeed

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
    add_header "" "";
}
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

Hay filtros de todo tipo para realizar infinidad de funciones de optimización, y lo normal es ir estudiando uno a uno cuál nos interesa más para nuestra configuración. Tenéis la lista de módulos disponibles aquí.

Nosotros vamos a utilizar los básicos de primeras, e iremos modificándolos al gusto. Activaremos el nivel CoreFilters:

pagespeed RewriteLevel CoreFilters;

Con este nivel activo tendremos por defecto los siguientes filtros activos:

   add_head
   combine_css
   combine_javascript
   convert_meta_tags
   extend_cache
   fallback_rewrite_css_urls
   flatten_css_imports
   inline_css
   inline_import_to_link
   inline_javascript
   rewrite_css
   rewrite_images
   rewrite_javascript
   rewrite_style_attributes_with_url

Si no nos interesa poner algún filtro concreto, simplemente con escribir el comando para deshabilitarlo sería suficiente.

pagespeed DisableFilters filtera,filterb;

De igual forma, si queremos habilitar un filtro que no esté dentro de los CoreFilters, lo podremos habilitar de forma manual:

pagespeed EnableFilters filtera,filterb;

Todos los filtros disponibles, como dije anteriormente, están en la página de configuración del módulo de Pagespeed. Cabe destacar que algunos filtros hay que configurar algún que otro parámetro para que funcione de forma correcta, por lo que una vez tengáis claros cuáles son los que necesitáis, deberéis leer completamente la documentación para que no se os escape nada.

Una vez habilitados los módulos que queremos hacer funcionar, tan solo tendremos que reiniciar el servicio NGinx, y si no hemos cometido ningún error tipográfico, funcionará sin problemas.

$ sudo service nginx stop
$ sudo service nginx start

Para comprobar que tenemos NGinx funcionando con Pagespeed, tendremos que leer la cabecera de la página una vez carga y encontraremos un header que indica que el módulo está funcionando. También podemos comprobarlo con esta web, donde nos dirá si está o no habilitado el módulo, dándonos una salida similar a esta:


HTTP/1.1 200 OK  
Server: nginx/1.11.5  
Content-Type: text/html; charset=utf-8  
Connection: keep-alive  
Vary: Accept-Encoding  
X-Powered-By: Express  
Strict-Transport-Security: max-age=31536000  
X-Cache: HIT  
Date: Mon, 28 Nov 2016 14:56:10 GMT  
X-Page-Speed: 1.11.33.4-0  
Cache-Control: max-age=0, no-cache  

Por desgracia, la comprobación de que los filtros estén funcionando o no hay que hacerla a mano, por lo que hay que leer completamente la documentación para saber qué hace cada filtro y ver, a través del código fuente de la web, si se están ejecutando correctamente.

Una vez tengamos certeza de que los filtros se están ejecutando correctamente, podemos ejecutar de nuevo el test de Pagespeed Insights y podremos ver si los cambios ejecutados han surtido efecto.

A partir de aquí, tan solo tenemos que ir probando qué filtros son los que necesitamos para aplicar los cambios que nos sugiere Pagespeed Insights y ir configurándolos al gusto.