<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://james.newtonking.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>James Newton-King : Intergen, ASP.NET</title><link>http://james.newtonking.com/archive/tags/Intergen/ASP.NET/default.aspx</link><description>Tags: Intergen, ASP.NET</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Speeding up ASP.NET with the Runtime Page Optimizer</title><link>http://james.newtonking.com/archive/2008/10/19/speeding-up-asp-net-with-the-runtime-page-optimizer.aspx</link><pubDate>Sun, 19 Oct 2008 04:40:00 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:31382</guid><dc:creator>James Newton-King</dc:creator><slash:comments>115</slash:comments><comments>http://james.newtonking.com/archive/2008/10/19/speeding-up-asp-net-with-the-runtime-page-optimizer.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://james.newtonking.com/images/SpeedupthewebwithRuntimePageOptimizer_AA6A/rpo_brand_smaller_white_bg.png" style="border-width: 0px; display: inline;" title="I am sick of running away. Did 'brave heart' run away? Did 'payback' run away?" alt="I am sick of running away. Did 'brave heart' run away? Did 'payback' run away?" mce_src="http://james.newtonking.com/images/SpeedupthewebwithRuntimePageOptimizer_AA6A/rpo_brand_smaller_white_bg.png" width="245" border="0" height="68"&gt; &lt;/p&gt;  &lt;p&gt;Earlier this year I worked on an exciting product called the &lt;a href="http://www.getrpo.com" mce_href="http://www.getrpo.com" target="_blank"&gt;Runtime Page Optimizer&lt;/a&gt; (RPO). Originally written by the guys at &lt;a href="http://www.actionthis.com/" mce_href="http://www.actionthis.com/" target="_blank"&gt;ActionThis&lt;/a&gt; to solve their website’s performance issues, I had the opportunity to develop it with them and help turn the RPO into a product that works on any ASP.NET website.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How RPO works&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;At its heart the RPO is a &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ihttpmodule.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.web.ihttpmodule.aspx" target="_blank"&gt;HttpModule&lt;/a&gt; that intercepts page content at runtime, inspects it, and then rewrites the page so that is optimized to be downloaded to the client. Because the RPO is a module it can quickly be added to any existing ASP.NET website, creating instant performance improvements.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What RPO optimizes&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://james.newtonking.com/images/SpeedupthewebwithRuntimePageOptimizer_AA6A/beforegraph.gif" style="margin: 0px 0px 5px 5px; display: inline;" title="A gun is not a weapon Marge, it's a tool. Like a butcher knife, or a harpoon, or... or an alligator." alt="A gun is not a weapon Marge, it's a tool. Like a butcher knife, or a harpoon, or... or an alligator." mce_src="http://james.newtonking.com/images/SpeedupthewebwithRuntimePageOptimizer_AA6A/beforegraph.gif" width="280" align="right" border="0" height="180"&gt;The RPO does three things to speed up a web page:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Reduces HTTP requests&lt;/b&gt;&amp;nbsp; &lt;br&gt;Reducing the number of resources on a page often produces the most dramatic improvement in performance. A modest sized web page can still take a significant amount of time to load if it contains many stylesheets, scripts and image files.       &lt;br&gt;The reason for this is most of the time spent waiting for a web page to load is not for large files to download but from &lt;a href="http://yuiblog.com/blog/2006/11/28/performance-research-part-1/" mce_href="http://yuiblog.com/blog/2006/11/28/performance-research-part-1/" target="_blank"&gt;HTTP requests bouncing between the browser and the server&lt;/a&gt;. The RPO fixes this by intelligently combining CSS and JavaScript text files together and merging images through &lt;a href="http://websiteoptimization.com/speed/tweak/css-sprites/" mce_href="http://websiteoptimization.com/speed/tweak/css-sprites/" target="_blank"&gt;CSS spriting&lt;/a&gt;. Fewer resources means less time wasted from HTTP requests and faster page loads. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Compresses Content&lt;/b&gt;       &lt;br&gt;RPO minifies (whitespace removal) and zip compresses JavaScript and CSS files, as well as the ASP.NET page itself. Compression reduces page size, saves bandwidth and further decreasing page load times. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Caching&lt;/b&gt;       &lt;br&gt;The RPO ensures all static content has the correct HTTP headers to be cached on a user’s browser. This further decreases "warm" page load times and saves even more bandwidth. When resources change on the server, the client-side cache is automatically refreshed. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;img src="http://james.newtonking.com/images/SpeedupthewebwithRuntimePageOptimizer_AA6A/aftergraph.gif" style="margin: 0px 0px 5px 5px; display: inline;" title="If you really want something in life you have to work for it. Now quiet, they're about to announce the lottery numbers." alt="If you really want something in life you have to work for it. Now quiet, they're about to announce the lottery numbers." mce_src="http://james.newtonking.com/images/SpeedupthewebwithRuntimePageOptimizer_AA6A/aftergraph.gif" width="280" align="right" border="0" height="179"&gt;Other stuff&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Every site is different so the RPO has &lt;a href="http://www.getrpo.com/Product/HowItWorks/" mce_href="http://www.getrpo.com/Product/HowItWorks/" target="_blank"&gt;extensive configuration options&lt;/a&gt; to customize it to best optimize your ASP.NET application. RPO has been used on ASP.NET AJAX, MVC, SharePoint, CRM, EpiServer and DotNetNuke websites. &lt;/li&gt;    &lt;li&gt;Lots of thought has been put into performance. The RPO caches all combined content and supports load balancing. Once combined content has been cached the only thing that happens at runtime is lightweight parsing of HTML, which is darn quick. I know because I wrote it that way &lt;img src="http://james.newtonking.com/emoticons/emotion-1.gif" alt="Smile" /&gt; &lt;/li&gt;    &lt;li&gt;The RPO supports all browsers, including new kid on the block: Chrome. RPO is even smart enough to &lt;a href="http://www.websiteoptimization.com/speed/tweak/inline-images/" mce_href="http://www.websiteoptimization.com/speed/tweak/inline-images/" target="_blank"&gt;take advantage of features only available in certain browsers&lt;/a&gt; and supply specially customized content to further improve page load times. &lt;/li&gt;    &lt;li&gt;The industrious people at RPO are making a version for Apache. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Working on the RPO was a great experience. Some very smart people are behind it and everyone contributed something unique to make RPO the awesome tool that it is today.&lt;/p&gt;  &lt;p&gt;RPO is out now and a fully featured trial is available at &lt;a href="http://www.getrpo.com/" mce_href="http://www.getrpo.com/" target="_blank"&gt;getrpo.com&lt;/a&gt;. Check it out!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fjames.newtonking.com%2farchive%2f2008%2f10%2f19%2fspeeding-up-asp-net-with-the-runtime-page-optimizer.aspx" mce_href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fjames.newtonking.com%2farchive%2f2008%2f10%2f19%2fspeeding-up-asp-net-with-the-runtime-page-optimizer.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fjames.newtonking.com%2farchive%2f2008%2f10%2f19%2fspeeding-up-asp-net-with-the-runtime-page-optimizer.aspx" alt="kick it on DotNetKicks.com" mce_src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fjames.newtonking.com%2farchive%2f2008%2f10%2f19%2fspeeding-up-asp-net-with-the-runtime-page-optimizer.aspx" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I noticed there is a &lt;a href="http://stackoverflow.com/questions/81108/runtime-page-optimizer-for-aspnet-any-comments" target="_blank" mce_href="http://stackoverflow.com/questions/81108/runtime-page-optimizer-for-aspnet-any-comments"&gt;question about the RPO on StackOverflow&lt;/a&gt; (I've been using StackOverflow a lot lately, excellent resource). The question discussion has some positive comments from users who have tried the RPO out. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=31382" width="1" height="1"&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://james.newtonking.com/archive/tags/Intergen/default.aspx">Intergen</category></item></channel></rss>