2008-10-31 15 views
33

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

Estoy utilizando controles que no son de mi propiedad y producen 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í?

módulo HTTP

Respuesta

31

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

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

+0

Excelente enlace. Esta fue mi solución para http://stackoverflow.com/questions/7121371/asp-net-mvc-razor-how-to-keep-nicely-indented-code-without-sending-a-load-of-w –

+0

Cómo ¿Aplicaste esto en el proyecto? Perdón por mi ignorancia, pero no puedo hacer que funcione. – fiberOptics

+0

@ryan ¿Qué errores obtienes? ¿Ha especificado pageParserFilterType en web.config? – thorn

6

quiero hacer un comentario sobre la sugerencia de Thorn (pero soy nuevo en desbordamiento de pila).

  1. El código enlazado (omari-o.blogspot.com) no admite MVC4, y aunque el código es de código abierto que no puede fácilmente ser actualizado debido a los cambios de frenado entre MVC3 y MVC4.

  2. Puede haber espacios en blanco escritos en el resultado http en tiempo de ejecución, solo el desarrollador del sitio 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 dinámicamente escribe espacios en la salida, tendrá que eliminarse dinámicamente.

9

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

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

+0

¿Su herramienta sabe cómo minimizar el código de la afeitadora? – Veverke

+0

WebMarkupMin no puede minificar el código de la afeitadora, pero puede minificar el código HTML de salida. –

+0

entonces, ¿cómo lo usa? Veo que puede descargar e instalar formularios web de asp.net, pero después de eso, ¿qué? http://www.nuget.org/packages/WebMarkupMin.AspNet4.WebForms/ –

3

La respuesta aceptada no funciona con MVC 4, por lo que aquí es un lib similar que le resta a la acumulación de tiempo https://github.com/jitbit/HtmlOptimizerMvc4

+0

¿Tuviste algún problema con que VS se detuviera para reconocer @model en tus vistas? – Veverke

+0

¿Por qué publicaste una versión bifurcada sin modificaciones? – Dehli

2

Simplemente añadiendo otra opción que no ve mencionado aquí, que es la que me recomendó el uso de:

Html minifier command line tool

Uso: here y here

Hay un problema , sin embargo, con esta herramienta: deja sola línea (//) comentarios, y causa problemas de la maquinilla de afeitar de análisis, ya que una sola línea de comentario colocado dentro de una C# bloque como el siguiente:

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

hará que el resto de salida minimización de la línea, a partir de este momento, para ser ignorados por el analizador de afeitar, que de este modo aumentar un error que indica que hay que no pudo encontrar el cierre "}" para el bloque.

Mi solución a este problema fue eliminar por completo estos comentarios de la salida. De esta manera funciona. Para ello, basta con quitar el RegexOptions.SingleLine de la línea 145:

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

Este problema debería solucionarse en la última versión - https://github.com/deanhume/html-minifier – Deano

+1

ya está disponible? – Veverke

Cuestiones relacionadas