Search code examples
iis-6compressiongziphttp-compression

Pre-compress static files in IIS 6


I am implementing Gzip compression for CSS and JS files on my site and just need to double check something.

Is the file compressed on every request? or is it collected and sent from the Temporary folder (if the file exists)? I just want to be sure that my files are not compressed on every request.

Also, is this a default behaviour or do I need some extra configurtion?

And last, do I need to worry or configure something when using hash tags in the path (to inform the browser that the file has changed) and static file compression? or it should work with no problem.

Edit: I am just using static compression

Many thanks


Solution

  • In order to get the most out of IIS compression you will need to add a few extra bits into the metabase file.

    1. Backup your meta base file.
    2. Enable live edit to the meta base file in IIS (or you need to restart IIS when your done.)

    find the IIsCompressionScheme and make the following edits to the meta base file

    <IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/deflate"
            HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
            HcCreateFlags="0"
            HcDoDynamicCompression="TRUE"
            HcDoOnDemandCompression="TRUE"
            HcDoStaticCompression="TRUE"
            HcDynamicCompressionLevel="10"
            HcFileExtensions="htm
                html
                css
                js
                txt
                xml"
            HcOnDemandCompLevel="10"
            HcPriority="1"
            HcScriptFileExtensions="asp
                dll
                aspx
                axd
                ashx
                asbx
                asmx
                swf
                asmx
                exe"
        >
    </IIsCompressionScheme>
    <IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/gzip"
            HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
            HcCreateFlags="1"
            HcDoDynamicCompression="TRUE"
            HcDoOnDemandCompression="TRUE"
            HcDoStaticCompression="TRUE"
            HcDynamicCompressionLevel="10"
            HcFileExtensions="htm
                html
                js
                css
                txt
                xml"
            HcOnDemandCompLevel="10"
            HcPriority="1"
            HcScriptFileExtensions="asp
                dll
                aspx
                axd
                ashx
                asbx
                asmx
                swf
                asmx
                exe"
        >
    </IIsCompressionScheme>
    

    Once done test a page from your site using a FF plug in like YSlow or Firebug, with Firebug you can inspect each element in the Net tab and check if the right compression is being applied to the right file types.

    There is a great article with examples here http://www.codinghorror.com/blog/2004/08/http-compression-and-iis-6-0.html