Minificar la salida HTML de la aplicación ASP.NET

¿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í?

No hay necesidad de hacerlo en tiempo de ejecución. Porque se puede hacer en tiempo de comstackción.

Detalles: http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html

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:

  • ASP.NET Core – WebMarkupMin.Web . Implementado como un módulo HTTP, por lo que puede funcionar con cualquier marco. Adecuado para su uso en el marco de ASP.NET Web Pages (Razor).
  • ASP.NET MVC – WebMarkupMin.Mvc
  • Formas Web ASP.NET – WebMarkupMin.WebForms

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 stack).

  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 .

La respuesta aceptada no funciona con MVC 4, así que aquí hay una lib similar que minimiza el tiempo de comstackción https://github.com/jitbit/HtmlOptimizerMvc4

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: aquí 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 rest 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*/);