Faster page loading in ASP.NET

This isnt really new technique but when it comes to optimizing ASP.NET web pages everything is appreciated. We all know that when we put script content after UI content we will get speed improvement. But when we deal with dynamic script tags its not easy to accomplish it. Omar is getting into this describing a nice technique to filter the HTML output and get all script tags and put it at the back. Here is a link to his post.
Check out a part of his great post here:

ASP.NET ScriptManager control has a property LoadScriptsBeforeUI, when set to false, should load all AJAX framework scripts after the content of the page. But it does not effectively push down all scripts after the content. Some framework scripts, extender scripts and other scripts registered by Ajax Control Toolkit still load before the page content loads. The following screen taken from www.dropthings.com shows several script tags are still added at the beginning of

which forces them to download first before the page content is loaded and displayed on the page. Script tags pause rendering on several browsers especially in IE until the scripts download and execute. As a result, it gives user a slow loading impression as user stares at a white screen for some time until the scripts before the content download and execute completely. If browser could render the html before it downloads any script, user would see the page content immediately after visiting the site and not see a white screen. This will give user an impression that the website is blazingly fast (just like Google homepage) because user will ideally see the page content, if it’s not too large, immediately after hitting the URL.

image Faster page loading in ASP.NET

From the above screen shot you see there are some scripts from ASP.NET AJAX framework and some scripts from Ajax Control Toolkit that are added before the content of the page. Until these scripts download, browser don’t see anything on the UI and thus you get a pause in rendering giving user a slow load feeling. Each script to external URL adds about 200ms avg network roundtrip delay outside USA while it tries to fetch the script. So, user basically stares at a white screen for at least 1.5 sec no matter how fast internet connection he/she has.

These scripts are rendered at the beginning of form tag because they are registered using Page.ClientScript.RegisterClientScriptBlock. Inside Page class of System.Web, there’s a method BeginFormRender which renders the client script blocks immediately after the form tag.

And here is how the HTML code looks like after manipulation:
image 3 Faster page loading in ASP.NET
Script tags are moved after the “form” tag when the filter is used

You can grab the Filter class from the App_Code\ScriptDeferFilter.cs of the Dropthings project. Go to CodePlex site and download the latest code for the latest filter.


Leave a Reply

Your email address will not be published. Required fields are marked *