ScriptReferenceProfiler + CompositeScript y pensando por que no lo ocupe antes!(Optimización de request de JavasScripts)
No es que me esté pegando cabezazos contra la pared, ya que soy cabeza dura y la podría romper, pero es no había prestado toda la atención al Control ScriptReferenceProfiler y de como me iba a ayudar en optimizar las cargas dinámicas de los JS generador por Microsoft ASP.NET AJAX.
Veamos el problema primero
Vamos a hacer una pequeña aplicación aprovechando el ColorPicker del Ajax Control Toolkit, el escenario sería algo así:
Ahora bien, tenemos el ScriptManager, un UpdatePanel, un TextBox al cual le agregamos la extensión.
Ahora a ejecutarlo:
Se ve bastante bien, pero veamos que es lo que sucede haciendo una inspección a la generación de Script dinámicos por parte del ScriptManager, para esto vamos a utilizar Firebug.
Fíjate en la gran cantidad de “pedidos” javascript y cuando se van demorando en cargar cada uno de ellos, cada pedido tiene un retardo de tiempo, por lo que se puede pensar que haciendo menos llamadas para obtener los Script, nos ayudará en disminuir el tiempo de carga de la página.
ScriptReferenceProfiler al rescate!
ScriptReferenceProfiler es un control que nos ayuda a obtener por pantalla para poder “consolidar” nuestros Script , se realiza mendiante la etiqueta CompositeScript del Scriptmanager (es una mejora de ASP.NET 3.5 sp1).
Este control se puede descargar desde acá
Ahora lo vamos a agregar a la página(no te preocupes si marca error el diseñador, este control no está construido para la UI )
Ahora ejecutamos y ….
Ahora me indica las referencias encontradas en mi página, entonces, lo que vamos a hacer es un copy-paste de esta información y agregarla en la etiqueta CompositeScript del ScriptManager.
Se ve en la imagen anterior que copié y pegué las referencias que tenía en mi página, luego borro el control ScriptReferenceProfiler debido a que ya cumplió su utilidad y ejecuto nuevamente la página para examinar su comportamiento,ahora optimizado. (vamos a ver si es verdad)
Te puedes dar cuenta el cambio, ahora solo hace un request a las Scripts, con un tiempo considerablemente menor, optimizando la carga de Scripts y por consiguiente tu aplicación.
Espero que te sirva!
Saludos,
Gonzalo.