AlbinSoft

La web está gorda

Con esa afirmación tan contundente llamaba mi atención un artículo sobre el desmedido consumo de recursos que hacen la mayoría de las webs y las medidas que se contemplan desde las empresas que desarrollan navegadores para tratar de reconducir esta situación y evitar esa problemática.

Puesto que para mi siempre ha sido clave la optimización (por convencimiento, por mi origen y otros factores) consideré este artículo muy interesante y por eso quiero explicaros la situación en vuestro lenguaje.

La situación surge por una cadena de dependencias. Queremos webs con efectos chulos pero ni todos los clientes pueden pagar un desarrollo a medida ni todos los programadores sabrían hacerlo así que la situación se resuelve utilizando productos ya empaquetados. Éstos como es lógico quieren ser los más versátiles así que implementan todo tipo de funcionalidades. Para lograrlo en muchas ocasiones se recurre al uso de otros productos ya empaquetados. Cada pieza que necesita otra pieza, añade un peso extra a la web.

Esa situación es muy tentadora para todos. Cada día existen más juguetes que son la delicia de muchos programadores, porque amplían sus capacidades y/o facilitan su trabajo cotidiano. Salvando las distancias entre humanos en una oficina y la programación de una web, una analogía sería la siguiente historia:

Imagina que un jefe pide un informe de ventas a su empleado. El empleado hace una buena provisión de información el listado de las facturas de los últimos años, aunque quizá el jefe sólo acabe visualizando los últimos meses; también coge la caja de doce rotuladores de colores, aunque quizá al final sólo haga una gráfica con tres líneas; además se provee de regla, cartabón, escuadra y porta ángulos, que nunca se sabe cómo serán esas líneas; quizá coja también un compás, no sea que de pronto tenga que hacer una gráfica de tarta; y por si surge tomar notas, se provee también de lápiz y goma.

Pues algo similar ocurre en el mundo web. Si se quiere hacer un carrusel de imágenes para que se desplacen de un lado a otro, se carga una librería que entre otras cosas es capaz de hacer transiciones en vez de delegarlo en el navegador de manera nativa aunque suponga un poco más de esfuerzo, para reaccionar a los botones o la rueda del ratón, se carga otra librería capaz de gestionar eso entre otras cosas, en vez de delegarlo en el navegador de manera nativa aunque suponga un poco más de esfuerzo.

Y la situación aún es peor porque muchas veces todas las páginas de una web cargan un recurso que es necesario en una sola página. Por ejemplo, el famoso plugin ContactForm7 de WordPress pone su hoja de estilo en todas las páginas de la web donde está instalado, aunque sólo exista una con un formulario de contacto. ¿Imaginas que nuestro empleado fuera todo el tiempo cargado con una mochila con material de oficina sólo por si un día alguien le pide un gráfico?

Por supuesto, ya existen medidas para paliar esa situación tales como servir imágenes de diferentes tamaños según el dispositivo,  la caché (se almacenan ficheros en el dispositivo para no tener que pedirlos por internet cada vez), redes de entrega de contenidos (servidores repartidos por el mundo para entregar ficheros desde un punto mas cercano al usuario en vez de usar conexiones por satélite o intercontinentales), etc.

Pero el crecimiento problema no cesa, y aunque cada día tengamos mayor capacidad de almacenamiento, mayores velocidades, …. también tenemos más tráfico y en ningún caso justifica que hagamos un consumo irresponsable.

Por ésto, se contemplan medidas como mostrar alertas cuando un usuario visita una página web pesada, puede parece una nimiedad porque pienses que el usuario ignorará ese mensaje, pero es la misma técnica que se ha utilizado al avisar al usuario de cuando está navegando en un servidor inseguro en lugar de avisar cuando está navegando en un servidor seguro como se hacía antes y mucha gente ha comenzado a tomar conciencia de la importancia de su privacidad no sólo por los molestos avisos de las cookies; pero es que además, en un segundo paso, el usuario podría  determinar un nivel máximo de recursos que permitiera consumir a las páginas web que visita, de manera que éstas se vieran obligadas a amoldarse o correr el riesgo de ser disfuncionales.