I spoke at Barcamp Saigon 2009 last Sunday. It was a fun event. Met a number of interesting people and learned some new things from other sessions. I talked about the two open-source libraries I developed, Fasterflect & Combres. Below are the slides I used for my presentations.
Combres (i.e. Combine-Resources), is a very easy-to-use library which can be used to automate many steps that you would have to do yourself when applying many performance optimization techniques in your MVC and Web Form ASP.NET applications. This library is formerly known as ASP.NET MVC Client-side Resource Combine Library until I decided to retire that boring and lengthy name. Combres is also a major upgraded over the previous version. In a nutshell, the following features are supported by Combres:
- Organize resource files, including JavaScript and CSS, into separate resource sets, each may share the same or use different configuration settings.
- ConfigConfiguration settings are specified in an XML file which is monitored by Combres so that changes get noticed and applied immediately.
- Resource files can be static files in the web server, dynamically generated files, or remote files from external servers or web applications.
- Allow files in resource sets to be combined, minified, and gzipped before sending to browser. All is done using 1 single HTTP request per resource set. (Refer to Yslow’s performance rules #1, #4 and #10 to know why this is useful.)
- The minification part is performed by the great YUI Compressor library.
- Generate proper ETag and Expires/Cache-Control headers for every response as well as support server-side caching. (Refer to Yslow’s performance rules #3 and #13 to know why this is useful.)
- Integrated with ASP.NET routing engine and thus work equally well for both ASP.NET MVC and ASP.NET WebForm applications.
- Support Debugging mode, which won’t cache or minify contents at all to facilitate debugging.
- Extensibility via the filtering architecture. Anyone can easily add more functionality to the Combres engine by writing a custom filter. There are 2 built-in filters in the 1.0 beta release, which I will describe in this article.
I wrote about how to use and enhance this library in this Code Project article.
You can also get the binary, source code and sample from these links:
Recent Comments