script net mvc minification example bundling bundleconfig asp and asp.net performance optimization minify

asp.net - mvc - bundles asp net webforms



Minificar la salida HTML de la aplicaciĆ³n ASP.NET (6)

¿Cuáles son las formas en que podemos reducir el tamaño de la respuesta HTML enviada por una aplicación asp.net?

Estoy usando controles que no son de mi propiedad y produce resultados con espacios en blanco. Estoy interesado en Minificar todo el resultado HTML de la página, al igual que lo hace google (Ver fuente www.google.com) para mejorar el tiempo.

¿Hay alguna clase de utilidad disponible para ASP.NET que pueda hacer esto por mí?




Para la plataforma Microsoft .NET hay una biblioteca llamada WebMarkupMin , que produce la minificación del código HTML. Para cada marco ASP.NET tiene su propio módulo:

La documentación está disponible en - http://webmarkupmin.codeplex.com/documentation



Quiero comentar la sugerencia de Thorn (pero soy nuevo en el desbordamiento de la pila).

  1. El código vinculado (omari-o.blogspot.com) no es compatible con MVC4, y aunque el código es de código abierto, no se puede actualizar fácilmente debido a los cambios de frenado entre MVC3 y MVC4.

  2. Es posible que haya espacios en blanco escritos en el resultado http en tiempo de ejecución, solo el desarrollador del sitio real puede saberlo. Por lo tanto, la minificación estática de los archivos de plantilla (aspx) no es infalible en absoluto. La minimización dinámica, sugerida por Gius, se debe utilizar para garantizar que los espacios en blanco se eliminen correctamente y, lamentablemente, esto implicará un costo de cálculo del tiempo de ejecución. Si el código escribe espacios de forma dinámica en la salida, deberá eliminarse dinámicamente .


Solo agregué otra opción que no veo en la lista aquí, que es la que me recomendaron usar:

Html minifier herramienta de línea de comandos

Uso: here y aquí

Sin embargo, hay un problema con esta herramienta: deja comentarios de una sola línea (//) y causa problemas para el análisis Razor, ya que un comentario de una sola línea dentro de un bloque C # como el siguiente:

@{ ... ... // anything ... }

causará que el resto de salida de minificación de la línea, a partir de este momento, sea ignorado por el analizador Razor, lo que provocará un error que indica que no pudo encontrar el cierre "}" para el bloque.

Mi solución para este problema fue eliminar por completo estos comentarios de la salida. De esta manera funciona Para hacer eso, simplemente elimine RegexOptions.SingleLine de la línea 145:

htmlContents = Regex.Replace(htmlContents, @"//(.*?)/r?/n", ""/*, RegexOptions.Singleline*/);