IIS 7.5 Static Content Compression (not consistent )
Asked Answered
C

1

8

I have the following web.config:

<urlCompression doStaticCompression="true" />
        <httpCompression>
            <dynamicTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
                <add mimeType="*/*" enabled="false" />
            </dynamicTypes>
            <staticTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
                <add mimeType="*/*" enabled="false" />
            </staticTypes>
        </httpCompression>

May plan does not allow Dynamic compression

The problem is, when I request css or js, IIS respond with GZIP and add vary:accept-encoding sometime and other time does not compress CSS nor JS, I can't find the pattern it is some kind of random.

I always try CTRL F5, even when you access www.mysite.com css and js are randomly compressed or not.

NB: hosted on NetworkSolution.

What's wrong with my config or IIS.

Thanks

Crave answered 19/3, 2013 at 12:48 Comment(1)
When I try cdn.novopath.com/content/css/master.css on whatsmyip.org/http-compression-test the first time says not compressed the second time says compressed!Crave
T
17

After a lot of searching, I finally found what got compression working more consistently on my IIS 7.5. To start with, IIS will not compress a file unless it loaded often enough. That brings up the question "what does IIS consider often enough?" Well, the defaults are 2 times every 10 seconds. Yikes!

This setting can be changed in web.config, but the section needs to be unlocked first in applicationHost.config. Here are the commands:

First unlock the section:

C:\Windows\System32\inetsrv\appcmd.exe unlock config /section:system.webServer/serverRuntime

Unlocked section "system.webServer/serverRuntime" at configuration path "MACHINE/WEBROOT/APPHOST".

Now that is done, edit the web.config file

<?xml version="1.0" encoding="UTF-8"?> <configuration>
    <system.webServer>
        <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00" />
        ...

In this case, I set it to hit the file once in a 10 hour period. You can adjust the values as necessary. Here is the document that explains the serverRuntime element:

http://www.iis.net/configreference/system.webserver/serverruntime

I hope this helps get your compression working properly.

Tedra answered 25/3, 2013 at 23:55 Comment(2)
I made a recent answer here which will provide a little more explanation: #14796725Hutchison
this apply even to dynamic content compression ?Jerrome

© 2022 - 2024 — McMap. All rights reserved.