我正在尝试在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"
答案 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"
具有特定的完全权限