Question

What are the ways by which we can reduce the size of the HTML Response sent by an asp.net application?

I am using Controls which are not owned by me and it produces output with white spaces. I am interested in Minifying the entire HTML output of the page just like how google does (View source www.google.com) to improve the timing.

Is there any Utility classes available for ASP.NET which can do this stuff for me?

Was it helpful?

Solution

There is no need to do it at run time. Because it can be done at compile time.

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

OTHER TIPS

For Microsoft .NET platform there is a library called the WebMarkupMin, which produces the minification of HTML code. For each ASP.NET framework has its own module:

Documentation is available at - http://webmarkupmin.codeplex.com/documentation

I want to comment on Thorn's suggestion (but I'm new to stack overflow).

  1. The linked code (omari-o.blogspot.com) doesn't support MVC4, and although the code is open source it cannot easily be upgraded because of braking changes between MVC3 and MVC4.

  2. There might be whitespaces written to the http result at runtime, only the developer of the actual site can know that. Thus static minification of template files (aspx) is not foolproof at all. Dynamic minification, which is suggested by gius, should be used to guarantee that whitespaces are removed correctly, and unfortunately this will incur a runtime computation cost. If code dynamically writes spaces to the output, it will have to be removed dynamically.

The accepted answer does not work with MVC 4, so here is a similar lib that minifies at build-time https://github.com/jitbit/HtmlOptimizerMvc4

Just adding another option I do not see listed here, which is the one I was recommended using:

Html minifier command line tool

Usage: here and here

There is an issue, however, with this tool: it leaves single line (//) comments, and it causes problems for Razor parsing, since a single line comment placed within a C# block like the following:

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

will cause the minification output rest of the line, from this point on, to be ignored by the Razor parser, which will thus raise an error stating there it could not find the closing "}" for the block.

My workaround for this issue was to completely removing these comments from the output. This way it works. To do that, simply remove the RegexOptions.SingleLine from line 145:

htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top