BundlesCDN - CDNFallBack

Bundles, minificación y CDN en ASP.NET MVC

Cuando empezamos a pensar nuestra aplicación para que funcione en un ambiente productivo con usuarios finales, siempre desearemos que el funcionamiento sea el mejor posible. Uno de los puntos importantes para lograr esto es que el tiempo de carga de la página en el navegador del cliente sea el menor posible.

Para lograr este objetivo en ASP.NET MVC contamos con tres conceptos que trabajan en conjunto: bundle, minificación y CDN.
El objetivo del bundle es agrupar varios archivos (tanto de scripts JavaScript como hojas de estilo CSS) en un mismo archivo. Con esto se logra perder menos tiempo en establecer la conexión para descargar cada archivo individual. A su vez, los navegadores restringen cantidad de elementos a descargar por dominio en simultáneo, agrupando varios juntos y mejorando la performance de carga.
La minificación en cambio tiene el objetivo de sacar todos aquellos espacios en blanco, comentarios y todo aquello que no sea necesario para la ejecución de un script o el agregado de una hoja de estilos. Con esto se logra una gran reducción de los tiempos de carga individuales de cada archivo. A su vez, para el caso de los scripts también ofrece ofuscación, ya que reemplaza los nombres de las variables por otros equivalentes pero con solo uno o dos caracteres.

Para entender de forma completa estos dos conceptos (además de no repetir una explicación bien) les recomiendo la lectura del post ASP.NET MVC 4 – Minification and Bundling de mi amigo Sebastián Henzenn donde, como siempre nos tiene acostumbrados, explica de forma clara y con ejemplos prácticos ambos conceptos y su utilidad.

Complementando un poco lo descripto allí, otra de las cosas que podemos hacer es anexar el uso de CDN para determinados scripts y hojas de estilo. Los CDN son servidores de contenido replicados en distintas ubicaciones, cuyo objetivo es servir contenido estático. Una de las grandes ventajas que nos ofrece es tener el contenido replicado geográficamente en distintas zonas geográficas, lo cual permite que el contenido esté lo más cerca posible de los usuarios. Esto produce una reducción mayor en los tiempos de carga, adicionalmente que deja en el servidor de nuestra aplicación la única responsabilidad de servir contenido dinámico y no archivos estáticos.

Leer más »