启用GZIP压缩错误:STATIC_COMPRESSION_NOT_SUCCESS

时间:2010-11-03 20:48:53

标签: iis iis-7 compression gzip

我正在尝试在IIS 7.5上启用GZIP压缩。

我认为所有设置都没问题。

在ApplicationHost.config中,我有这个httpCompression部分:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="0">
       <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
       <staticTypes>
             <add mimeType="text/*" enabled="true" />
             <add mimeType="message/*" enabled="true" />
             <add mimeType="application/x-javascript" enabled="true" />
             <add mimeType="application/atom+xml" enabled="true" />
             <add mimeType="application/xaml+xml" enabled="true" />
       </staticTypes>
</httpCompression>

这个urlCompression部分:

<urlCompression dostaticcompression="true" />

以下是失败的请求跟踪结果:

  STATIC_COMPRESSION_NOT_SUCCESS     
  Reason="UNKNOWN_ERROR"

3 个答案:

答案 0 :(得分:3)

以下配置对我有用。只需使用下面给出的内容替换applicationHost.config中的httpCompression部分,然后重新启动IIS。那就是!!!

  <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"
    staticCompressionDisableCpuUsage="95" staticCompressionEnableCpuUsage="60"
    dynamicCompressionDisableCpuUsage="95" dynamicCompressionEnableCpuUsage="50">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
    <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/x-javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
      <add mimeType="application/json" enabled="true" />
      <add mimeType="application/json; charset=utf-8" enabled="true" />
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/x-javascript" enabled="true" />
      <add mimeType="application/atom+xml" enabled="true" />
      <add mimeType="application/xaml+xml" enabled="true" />
      <add mimeType="application/json" enabled="true" />
      <add mimeType="application/json; charset=utf-8" enabled="true" />
      <add mimeType="*/*" enabled="false" />
    </staticTypes>
  </httpCompression>

配置完成后,我得到了下面的Headers响应,表明数据是使用gzip压缩压缩的

Cache-Control → no-cache
Content-Encoding → gzip
Content-Length → 4202
Content-Type → application/json; charset=utf-8
Date → Wed, 22 Jul 2015 07:40:17 GMT
Expires → -1
Pragma → no-cache
Vary → Accept-Encoding
X-Powered-By → ASP.NET 

以上配置适用于整个IIS。如果要为单个网站配置此项,请替换

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />

<section name="httpCompression" overrideModeDefault="Allow" />

在applicationHost.config中,而不是替换applicationHost.config中的httpCompression部分,将其添加到您网站的web.config中的system.webServer标记下

另外,请确保为数据指定了正确的MIME类型。在我的情况下,它是在JSON中,所以我使用下面的配置

<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />

答案 1 :(得分:0)

如果我查看html5-boilerplate项目的web.config,他们会使用这种方法:

<!-- 
            GZip static file content.  Overrides the server default which only compresses static files over 2700 bytes
        -->
        <httpCompression directory="%SystemDrive%\websites\_compressed" minFileSizeForComp="1024">
            <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
            <staticTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
                <add mimeType="application/json" enabled="true" />
                <add mimeType="*/*" enabled="false" />
            </staticTypes>
        </httpCompression>

https://github.com/paulirish/html5-boilerplate-server-configs/blob/master/web.config

可能是您指定的零值或您正在使用的目录路径。

另见

答案 2 :(得分:0)

我建议检查应用程序池用户帐户(如果有的话)对目录"%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"具有特定的完全权限