Thursday 2 February 2012

Asp.net & IIS Tricks:- Using GZip Compression with IIS 6.0 to compress your dynamic content such as your aspx pages and increase the client side experience by downloading the pages fast.


Introduction

In this article i will discuss how to enable gzip compression for the dynamic content.After following these steps you can enable compression for your aspx pages and other dynamic content.
But you have to be careful while compressing the dynamic content.I would suggest you to use the dynamic compression only when although you are using asp.net but most of your webpages are more likely to be static with only few of them changing now and then.
This is due to the  reason that compression brings in overhead on the server CPU and memory.So if the content is so much dynamic that it keeps on changing with every request its not at all advisable to use the compression for your dynamic pages.
Instead you can use gzip compression for your static pages such as html,css and js files.
But if your dynamic content is also near about static then you can use gzip compression provided as a built in feature of windows and IIS 6,by default it is not enabled here in this article we will go through the steps to enable the gzip compression scheme.
Enabling this compression can also be useful for developers who are running and testing their websites projects on their dev machines and are frustrated of long loading time of the content of their test websites and web applications.

Case Study

Here the case study consists of one of my recent projects which was a public facing website build up on Telerik's Sitefinity Content Management System.
So here in my case as the client was using Sitefinity so my pages were all .aspx pages but they were rather static as we CMS enabled their existing HTML content which was almost static.
So i will provide you with the reduction in size without any significant load on the server which was achieved using the gzip compression scheme with IIS
Lets analyze the page HTML,CSS,JS before enabling the compression.Below are the images which are self explanatory.







So it is now quite obvious that there is a lot of reduction in the actual page size which will be transferred across the wires.
So in specific situations you should enable compression for all the content and in most of the cases at least you should enable the gzip compression for the static content.
Enabling the GZip Compression
Now let us walkthrough the steps to enable gzip compression within the IIS.
  • To enable gzip compression first open the IIS Manager using "inetmgr"  command at your run command prompt.
  • After opening the IIS Manager navigate to the website properties by right clicking the website node.(Remeber here  all images are shown from Windows Server 2003)
  • Now go to the service tab and inside the http compression section enable compress application files and compress static files both and then click ok.



    After this just navigate to the Web Service Extension section and in this section add a new extension for gzip compression.Just Click Add new Web Service Extension and name the extension as Http Compressor or anything and in the Add section select the file gzip.dll which is inside C:\Windows\System32\Inetsrv\gzip.dll and then click OK.
     
   
   After adding the web service extension now we have to modify the IIS Metabase.xml file to achieve compression for dynamic pages    such  as aspx pages.

    IIS Metabase.xml file can be found in the directory C:\Windows\System32\Inetsrv\Metabase.xml

    Make sure to have another copy of this file as it is very important and if anything goes wrong here IIS will crash on your system.So make a backup of this file somewhere in your disk.      

    Now open this file in a simple editor either Notepad or Notepad++ and search for the entry called ICompressionScheme.There may be 6 occurrences of this word so one of them is for 'deflate" another one for "gzip"and the last one "Parameters" So choose the section having gzip as given below and add the required extension in the "HcScriptFileExtensions" as shown below we have added aspx. 


    Now save this file if your editor says that this file is opened in some other application or some other application is using your file then either stop the IIS service and the word wide web publishing service and then again try it, another method is to edit the metabase.xml file while it is being opened and used by the other applications.

    So for the second scenario we have to make some changes in the IIS properties which are given below

    After enabling the direct metabase edit you can now modify the metabase.xml file without stopping the IIS.After you are done you just have to restart the IIS using "iisreset /noforce"


    Now look for the changes now you should receive compressed content from the server.

    For checking you can use various online websites and tools such as pipeboost.

Conclusion
User gzip compression over the default deflate compression every time for your all static pages and content leaving some special cases and scenarios.
And also try for compression of your dynamic content if it is more of a static type.
Getting file reduction upto 70-95% is a lot when we are talking about transferring data on net.

No comments:

Post a Comment