¿Demasiados plugins de WordPress?(cc) Foto porGaetan Lee

Esta es la pregunta del millón. Y como ahora veremos, no tiene respuesta sencilla. Depende.

Desde el punto de vista del rendimiento, un WordPress recién instalado no es lo más ágil en cuanto a velocidad, sobretodo porque se basa en un lenguaje interpretado como PHP. Por ello, cuantos más plugins instalemos, más carga de proceso añadimos al sistema, y por tanto, obtenemos una menor velocidad de carga y de rendimiento. Esto es importante tenerlo claro para no ponernos a instalar plugins a diestro y siniestro, sino tener claras las funcionalidades que nos ofrece cada  plugin y si realmente es necesaria su instalación.

Sin embargo, tampoco hay que obsesionarse por cuál es el número máximo de plugins que podemos instalar, sino que depende de la calidad de los que instalemos. Podemos tener 30 plugins que funcionen perfectamente y que sólo uno de ellos tenga problemas de rendimiento o conflictos. Como en todo, hay que tener la justa mesura. Herramientas como Plugin Performance Profiles (P3) nos ayudarán a detectar esa manzana podrida.

WordPress es una muy buena herramienta que nos proporciona un framework ya desarrollado y robusto con el que disponer de un blog básico, pero no es menos cierto que gran parte de su popularidad se la da el gran ecosistema de plugins con el que cuenta, y que le dotan de funcionalidades que el core de WordPress no implementa.

Al final, la decisión para instalar o no un plugin se debe basar en factores como, por ejemplo:

  • La funcionalidad que ofrece es realmente necesaria.
  • Las estadísticas de uso del plugin y su última fecha de actualización.
  • Foros de soporte activos, con resolución reciente de problemas.
  • La documentación y la facilidad de uso de su interfaz

Finalmente, aunque el aumento de uso de plugins de WordPress aumenta las probabilidades de tener una merma en el rendimiento, existen técnicas de optimización web que nos ayudaran posteriormente a aligerar la carga de procesamiento del servidor, pudiendo disfrutar de las funcionalidades de los plugins que realmente necesitemos.

En ManageWP han realizado un artículo muy completo sobre este mismo tema, del que recomiendo su lectura: https://managewp.com/wordpress-plugins-how-many

Próximamente publicaré un post con los plugins que utilizo para este blog y las funcionalidades que me aportan. ¡Estad atentos!

Servidores(cc) Foto por Rob Halsell

Después del post inicial de presentación, ahora viene el rollete con los detalles técnicos de cómo he montado esta web, qué tecnologías y servicios hay detrás y demás tecnicismos frikis. ¡Avisado quedas!

La web se divide en dos aplicaciones: Páginas estáticas y el Blog.

Las páginas estáticas

Tanto la pantalla de Inicio, como la parte de Proyectos y la Biografía las he implementado mediante ASP.NET MVC 5.

Dispone de un pequeño Backend, para almacenar los datos de los Proyectos, Clientes, Imágenes, etc. para el que utilizo sencillos archivos XML que deserializo a objetos DTO (Data Transfer Object) que luego manipulo con Linq. El coste de la deserialización de estos archivos está entre 5 y 10ms, que es despreciable, y que además cacheo en memoria, por lo que no supone una penalización mayor que tenerlos en una BD relacional al uso. De hecho, es apreciablemente más rápido y barato, y el volumen de datos que manejo es relativamente pequeño.

A modo de ejemplo, esta es una muestra del archivo que almacena las categorías de proyectos:

y este, un fragmento resumido de la clase C# que lo deserializa:

Una vez dispongo del modelo de datos modelado y los archivos XML con la información controlados, desarrollo las 4 vistas principales del proyecto, utilizando Razor como View engine y Bootstrap + el template Unify para el diseño y la implementación del frontend.

El blog

Para montar el blog me decidí a utilizar WordPress, porque no tiene sentido reinventar la rueda y ponerme a programar un gestor de blogs desde cero, y porque últimamente he estado trabajando con esta plataforma por motivos profesionales y le estoy cogiendo el tranquillo, además de para seguir aprendiendo y probando cosas nuevas para futuros proyectos.

Como era importante para mi mantener una uniformidad visual, decidí utilizar el mismo tema que para el resto de la web, por lo que me tocó adaptar el tema a WordPress, ya que en origen no viene preparado para ello.

Como curiosidad, comentaré que el blog está incluido dentro de la misma solución de Visual Studio que implementa la web, en una carpeta /blog, ya que me facilita las cosas a la hora de hacer el deploy del site a Azure desde el propio IDE, además de ahorrar costes de hosting porque sólo necesito un site. Pero para que esto funcione y convivan ambas tecnologías (ASP.NET MVC 5 y PHP) hay que hacer un par de retoques, para que cada una enrute sus peticiones y no interfiera en las de la otra.

En mi caso, utilizo como alojamiento Azure Websites, por lo que mi servidor web es un IIS ejecutando PHP 5.5.

Por una parte, en el archivo Web.config común hay que incluir la regla de enrutamiento de WordPress:

Importante comprobar como sólo enrutamos las peticiones a blog/*. De esta manera, el motor de PHP ignora las peticiones que no vayan explícitamente al blog y se las deja a MVC. Igualmente es importante cambiar el nombre de la regla, de “wordpress” (por defecto) a otro (en mi caso, “blog“). Esto es debido a que es muy probable que tengamos otro archivo web.config dentro del directorio del blog que utilice los valores por defecto y esto crea un conflicto en IIS que generará un error y el blog dejará de funcionar.

Por otro lado, es importante decirle a MVC que no enrute las peticiones al blog, para que las maneje PHP. Esto se consigue añadiendo la siguiente línea antes del código de definición de las rutas de nuestra aplicación:

Los servicios

Para el alojamiento utilizo 1 Azure Website, que comparten tanto el site en MVC 5 como el blog en WordPress, así comparto gastos de hosting.

Para mejorar el rendimiento, utilizo CloudFlare como proxy DNS, que me proporciona servicios de seguridad y optimización automáticos de forma transparente, y Varnish como servidor proxy-caché, que tengo instalado en una máquina virtual Extra pequeña con Ubuntu, también sobre Azure. La unión de estos dos servicios reduce enormemente el número de peticiones que recibe el sitio web, por lo que es suficiente con una instancia compartida del Website para mantener el site.

Finalmente, una vez aplicadas las técnicas de optimización WPO al site principal, www.sergigisbert.com, obtenemos la siguiente calificación de GTMetrix:

gtmetrix webVer el informe completo

Siempre penalizada por la inclusión de recursos externos a los que no tenemos acceso.

Dudas, aclaraciones, preguntas, sugerencias, ¡aquí me tenéis!

Bienvenido a mi web personal(cc) Foto por Steve Snodgrass

¡Hola!

Después de mucho tiempo pensando en que tenía que recopilar mis trabajos y ponerlos online, finalmente he sacado un poco de tiempo (robado al sueño, claro) y he alumbrado esta, mi humilde web personal, que estás visitando ahora.

Es un compendio de los proyectos en los que he estado trabajado en estos años de vida profesional, así como un extracto de mi vida laboral y formativa, a modo de pequeño Currículum Vitae en la nube, y un lugar donde concentrar mi vida digital: redes sociales, servicios, artículos, etc. Así me ayudo a mi mismo a mantener en orden y localizadas mis identidades digitales.

Además de lo anterior, he decidido traerme también mi viejo y olvidado blog e integrarlo en la página, con la buena intención de retomarlo e intentar darle algo de contenido con mayor asiduidad (oigo alguna risita al final de la sala…sí, me refiero a ti!!). Sé que no será la página con más visitas del mundo, pero al menos será la mía. ¡Espero que te guste!

Como curiosidades técnicas, comentaré que la web es una mezcla de ASP.NET MVC 5 para las páginas de Inicio, Proyectos y Biografía, y de WordPress para el Blog. Utilizo Azure Websites como alojamiento, y está acelerada por Cloudflare y Varnish, éste último, instalado en una máquina virtual en Azure con Ubuntu. El diseño está montado a partir del tema Unify, que tuve que convertir en un tema de WordPress para utilizarlo también en el blog.

En breve, dedicaré un post específico a detallar los entresijos técnicos que he utilizado para montar la web.

Actualización (27/12/2013): El post con los detalles técnicos puedes encontrarlo aquí: Detalles técnicos de implantación de la web.

Te invito a que pinches en Inicio y te des una vuelta por la web, ¡a ver qué te parece!