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?
Respuesta
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.
Gracias por este Dave. Genial saber. – nickytonline
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
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?]
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.
¿Quién votó negativamente esta respuesta y por qué? –
No estoy seguro, vote por mí porque comparto su opinión sobre ASP.NET Ajax. –
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
¿Qué preferirías tener:
- MicrosoftAjax.js viene comprimido, ya ofuscado.
- MicrosoftAjax.js viene sin comprimir y abierto para que pueda leerlo y entenderlo usted mismo.
¿por qué no ambos? jQuery viene en ambos, ¿verdad? –
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
@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
Ver http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx, necesita la opción
enableScriptMinification="true"
y añadir a la lista MicrosoftAjax.js
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
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.
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
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
- 1. ¿Hay alguna buena razón por la cual la #region y la #endregion no funcionen en F #
- 2. ¿Hay alguna razón por la cual la expresión StringPiece/StringRef no sea más popular?
- 3. ¿Hay alguna razón por la cual la base de datos h2 no debe usarse en producción?
- 4. ¿Hay alguna razón por la cual los desarrolladores de software no están externalizando la autorización?
- 5. ¿Hay alguna razón por la cual MySQL no sea compatible con FULL OUTER JOINS?
- 6. ¿Hay alguna razón en particular por la cual addClass() de jQuery no sea correcto?
- 7. ¿Hay alguna razón por la cual ciertos sitios no permiten períodos en las contraseñas?
- 8. ¿Hay alguna buena razón por la cual los ternarios en C# son limitados?
- 9. ¿Hay alguna buena razón por la cual las envolturas AntiXss.JavaScriptEncode resultan en comillas simples?
- 10. ¿Existe alguna razón por la cual fopen() no funcione después de varios cientos de aperturas?
- 11. ¿Hay una buena razón por la cual `deleteBy` no tiene su tipo más general?
- 12. ¿Hay alguna buena razón por la cual el operador de asignación no es un punto de secuencia?
- 13. Solr eliminar no trabaja por alguna razón
- 14. ¿Hay alguna razón por la cual un programador de Windows .Net necesita aprender C o C++ nunca más?
- 15. Hay una razón por la que cshtml no es popular
- 16. ¿Hay alguna razón para usar System.Uri?
- 17. ¿Hay alguna razón para lanzar una DivideByZeroException?
- 18. ¿Hay alguna razón para no usar AssertionHelper con NUnit?
- 19. ¿Hay alguna razón para usar esto->
- 20. ¿Hay alguna razón para no usar "esto" ("Self", "Me", ...)?
- 21. ¿Hay alguna razón por la que no podamos iterar en "Rango inverso" en ruby?
- 22. ¿Hay alguna razón por la que no debería comenzar con C#
- 23. ¿Hay alguna razón por la que Async.Sleep no se puede cancelar de inmediato?
- 24. ¿Hay alguna razón para no usar las propiedades 'protegidas'?
- 25. ¿Hay alguna razón por la cual ctypes.CDLL de Python no pueda generar automáticamente restype y argtypes desde archivos de cabecera en C?
- 26. La razón por la cual typeglobs se puede usar como referencia en Perl
- 27. ¿Hay una buena razón por la cual la propiedad Máxima de ScrollBar solo se puede alcanzar mediante programación?
- 28. ¿Hay alguna razón para no usar los tipos de aplicación de la unidad?
- 29. ¿Alguna razón para no usar XmlSerializer?
- 30. ¿Hay alguna razón para tener una propiedad sin getter?
+1 ¡Buena pregunta! –
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
Mi comentario anterior ya no es verdad. La respuesta de Dave Ward es buena, así que no hagas bricolaje. – nickytonline