为什么我的javascript文件有时会被压缩而有时却没有?(IIS Gzip问题)

时间:2010-05-06 07:01:42

标签: javascript iis caching compression gzip

我在我的iis设置中为javascript文件启用了gzip,这是相应的配置部分。

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="10" dynamicCompressionLevel="8" />
        <dynamicTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
  <add mimeType="application/soap+msbin1" 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="application/x-javascript" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
    </httpCompression>

目前,当我下载我的js文件时,似乎有时服务器返回gzip文件,有时候没有。我不知道为什么,以及如何调试。

如果一个文件已经被gzip压缩,它应该缓存在本地磁盘中,下次有人再次访问该文件时,iis内核应该直接返回缓存gzip文件而不再压缩它。是吗?

3 个答案:

答案 0 :(得分:1)

jaf,我自己弄清楚,iis中可能存在一些错误。您可以设置frequentnthitthreshold选项以强制脚本文件始终gzip文件。 我写了一篇关于这个bug的帖子,但它是中文版,这是谷歌翻译版 Why gzip not work in IIS7?

答案 1 :(得分:1)

修复确实似乎是在applicationHost.config文件中的system.webServer / serverRuntime节点上将frequentHitThreshold属性设置为1。记录在http://www.iis.net/ConfigReference/system.webServer/serverRuntime

您可以通过以管理员身份执行以下命令来执行此操作:

%windir%\system32\inetsrv\appcmd set config /section:serverRuntime /frequentHitThreshold:1 /commit:apphost

警告 - “频繁命中”概念似乎并不特定于压缩。我不知道设置这个是否会产生其他后果!

答案 2 :(得分:0)

清除浏览器缓存,然后重试。