Minify Html output of ASP.NET Application

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?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

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

Method 2

Try HTTP module as described here: http://madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-20

Method 3

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

Method 4

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.

Method 5

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

Method 6

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*/);


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x