这个问题是在 feed.cnblogs.com 中遇到的,比如博客园首页的RSS是 http://feed.cnblogs.com/blog/sitehome/rss, 用Firefox打开,用Firebug查看:
如上图,响应头中没有出现Content-Encoding: gzip,说明没有被压缩。
如果访问:http://feed.cnblogs.com/opml.xml(静态文件) ,Firebug中的显示如下:
也就是说静态有效,动态压缩失效。
IIS的配置 - C:\Windows\System32\inetsrv\config\applicationHost.config
1. 确实启用了Dynamic Compress
<urlCompression doDynamicCompression="true" />
2. 也启用了 appliation/xml MIME 类型的动态压缩
<dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/*" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes>
奇怪的地方有三个:
1. 同一台服务器,其他站点动态压缩都正常;
2. 同样的程序在其他服务器跑,动态压缩正常;
3. 其他服务器跑的IIS配置与这台一样。
昨天晚上被这个折腾得不想睡觉,今天一定要搞定它!
在请求的 http headers 中必须有下列标头:
Accept: text/html, application/xhtml+xml, */* // */* 是用于接收压缩数据的设置,如果不设置,IIS会返回未压缩格式数据。
Accept-Encoding: gzip, deflate
请求头正常
@dudu:
<add mimeType="*/*" enabled="false" /> 修改为 true 试试。
@程序猿.码农: 试过了,解决不了问题
@dudu:
要不你通过IIS管理器,看下对应站点的“动态压缩”是否勾选上。
@程序猿.码农: 勾选上了
@dudu: 除了rss这个,还有没有别的启用动态压缩,且成功的服务?
@dudu: 会不会和服务器的Cache-Control设置有关。
关注一下!
关注。。。
是被 EditPlus/Notepad++ 欺骗了,虽然修改/保存了,重要打开applicationHost.config也看到修改后的内容,但实际文件并没有被修改。
用记事本打开 applicationHost.config 还是原来的内容,用记事本修改/保存后重启IIS,并重建这个IIS站点,解决就解决了。