2009-06-24 18 views
18

Comprimo mi propio JS usando YuiCompressor, pero ¿hay alguna razón por la que MicrosoftAjax.js no se haya minimizado? O hay alguna configuración para decir ejecutar la versión comprimida de la misma (si hay una versión comprimida). ¿O necesito descompilarlo y minimizar el recurso de script?¿Hay alguna razón por la cual MicrosoftAjax.js no esté minificado?

+0

+1 ¡Buena pregunta! –

+0

Bueno, de las respuestas que obtuve, no parece ser de todos modos para obtener una versión reducida/comprimida de MicrosoftAjax.js lista para usar. Entonces, parece que el bricolaje es el camino a seguir, como mencioné en la respuesta que elegí. Como mencioné a Josh, en ASP.NET 3.5 puede combinar scripts ahora, http://msdn.microsoft.com/en-us/library/cc488552.aspx. Todavía no hemos migrado a 3.5, pero cuando lo haga, lo verificaré. He leído críticas mixtas al respecto. Además, agregué jQuery al proyecto hace un tiempo, así que poco a poco jQuerifico todo lo que se puede jQueificar. – nickytonline

+2

Mi comentario anterior ya no es verdad. La respuesta de Dave Ward es buena, así que no hagas bricolaje. – nickytonline

Respuesta

23

Me sorprende que estas respuestas engañosas.

ASP.NET AJAX siempre ha proporcionado versiones depuradas y comprimidas de MicrosoftAjax.js. Una combinación de la configuración de depuración de web.config y ScriptManager's ScriptMode property controla a qué script se hace referencia.

Además, puede usar the "retail" setting para forzar scripts comprimidos independientemente.

+1

Gracias por este Dave. Genial saber. – nickytonline

+0

Brillante, no tenía idea de la configuración "minorista", nuestra empresa tiene la costumbre de implementar cosas en producción aún en modo de depuración, etc. – Matt

-2

Solo puedo suponer que se ha dejado como está para facilitar la comprensión, y como ya lo insinuó, veo por qué no puede comprimirlo usted mismo, es solo JavaScript después de todo - Aunque MS podría gustarle creer lo contrario, ¡no lo rocían con polvo mágico de duendes para hacerlo diferente! :)

[Y seamos sinceros; MS nunca ha tenido miedo del tamaño de su código, ¿verdad?]

0

EDIT: En mi defensa, al momento de escribir esta respuesta no tenía experiencia con .NET 3.5; Ahora me doy cuenta de que han realizado varias mejoras muy necesarias en esta área.


Evidentemente, MS no cree que el tamaño del archivo JavaScript sea muy importante (lo cual es una locura). Además, en función de mi experiencia con MS Ajax, también inyectan varias etiquetas SCRIPT (a veces más de 10) en el marcado. Estas etiquetas traen scripts de un manejador WebResource.axd. ¡De modo que se deben realizar diez o más solicitudes solo para obtener el Javascript necesario para ejecutar la página! Para agregar a la ridiculez, insertan una cadena de consulta loca en la URL del controlador, lo que probablemente impide que el navegador guarde en caché la secuencia de comandos.

Esta locura era razón suficiente para mí a la zanja de MS Ajax por completo y cambiar a jQuery, que es mucho mejor biblioteca, especialmente desde Visual Studio now has Intellisense for jQuery.

+0

¿Quién votó negativamente esta respuesta y por qué? –

+0

No estoy seguro, vote por mí porque comparto su opinión sobre ASP.NET Ajax. –

+0

También recibí una votación negativa: ¿quizás tenemos un empleado de MS en SO? :) Desearía que los votantes abajo explicaran por qué han votado así ... – CJM

1

¿Qué preferirías tener:

  1. MicrosoftAjax.js viene comprimido, ya ofuscado.
  2. MicrosoftAjax.js viene sin comprimir y abierto para que pueda leerlo y entenderlo usted mismo.
+3

¿por qué no ambos? jQuery viene en ambos, ¿verdad? –

+0

Si bien sería trivial tener ambas versiones, y bastante útil también, si fuera a tomar el camino más fácil, debe proporcionar la versión no comprimida. +1 porque esto no merecía votación negativa. – CJM

+0

@Neil N. Estoy de acuerdo, ¿por qué no las dos? Al desarrollar el uso sin comprimir y en el uso de prod la versión minimizada/ofuscada. – nickytonline

3

Ver http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx, necesita la opción

enableScriptMinification="true" 

y añadir a la lista MicrosoftAjax.js

+0

He leído este artículo antes, pero gracias por publicarlo aquí. Lo que estaba buscando era una solución lista para usar de Microsoft Ajax. Parece que el bricolaje es el camino a seguir en este. – nickytonline

7

Todos los scripts en System.Web.Extensions están minificados: hay dos versiones de cada uno, como señala la excelente respuesta de Dave Ward. ScriptManager usará por defecto la versión de depuración cuando el web.config esté en modo de depuración. Voltéelo para liberarlo con la configuración de venta al por menor o debug = "false", y luego observe el guión.

Además, las secuencias de comandos servidas a través de WebResourceHandler o ScriptResourceHandler están almacenadas en la memoria caché.Se almacenan en la memoria caché de la mejor manera posible, para siempre, por lo que ni siquiera necesitan 301 en futuras visitas. La cadena de consulta es tal como es, porque contiene datos cifrados. Está encriptado porque contiene información sobre el recurso de script, incluido un nombre de ensamblado, y también porque evita los ataques de inundación de caché.

No busco representante aquí, solo quería dar más detalles.

+1

Es bueno saber que WebResourceHandler o ScriptResourceHandler están en caché. Así que supongo que cuando realice cambios y vuelva a implementarlos, estos se guardarán en la memoria caché de nuevo, pero como archivos diferentes, porque la cadena de cifrado ha cambiado. – nickytonline

+2

Sí. Cualquier cambio en el recurso cambiará la cadena de consulta, lo que dará como resultado un elemento nuevo en la memoria caché. Además, no mencioné que los guiones también están comprimidos en gzip. – InfinitiesLoop

Cuestiones relacionadas