我正在使用以下web.config块在IIS7上启用静态和动态压缩,但它没有压缩响应。(通过Fiddler验证)
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/css" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/css" enabled="true" />
<add mimeType="text/javascript" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="true" />
</staticTypes>
</httpCompression>
<staticContent>
<remove fileExtension=".js" />
<mimeMap fileExtension=".js" mimeType="application/x-javascript" />
</staticContent>
但它没有做任何压缩。我还检查过服务器是否安装了静态/动态压缩。还试过这个how-can-i-get-gzip-compression-in-iis7-working但不适合我。任何人都可以帮忙解决新事物吗?
答案 0 :(得分:2)
我无法通过关注StackOverflow上的建议片段来解决问题。这就是我管理它的方式。
首先,确保将Dynamic Compression安装为Web角色的一项功能。通常,如果未安装模块,则会在IIS管理器中收到警告,但如果您手动设置了web.config,则不会发出警告,因为它会欺骗IIS UI逻辑。
然后我删除了所有web.config内容(如您的问题)并通过IIS管理器进行设置。我这样做是因为在MSDN上,一条容易错过的评论说:
您还可以为MIME类型添加通配符条目。但是,你可以 仅为Web服务器级别设置MIME类型。例如,要启用 首先是默认网站的所有MIME类型的静态压缩 为服务器级别的MIME类型添加通配符条目,然后 为默认网站启用静态压缩。
专注于:
但是,您只能为Web服务器级别设置MIME类型。
所以我不确定所有这些过滤器和东西是否真的在web.config中工作。就个人而言,它不适合我 - 即没有Content-Encoding: gzip
标题。
在我全力以赴后,我不得不使用IIS管理器,在IIS:压缩下,确保它设置在服务器级别,然后对于网站,我不得不删除勾选,应用它,再次勾选它重新申请。
我最后在web.config中只有<urlCompression doDynamicCompression="true" />
,这有点奇怪,因为我不关心压缩URL。
无论。我现在在我的网站的响应标题中有Content-Encoding: gzip
- 所以我认为它正在工作。
答案 1 :(得分:1)
你能否启用失败的请求跟踪,它应该包含有关可能发生的事情的信息,它通常属于几个桶,1)生成压缩文件的权限,2)文件太小而不需要压缩,3)文件经常不够,所以它没有被压缩,4)mimetype问题
http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis7/