我在我的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文件而不再压缩它。是吗?
答案 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)
清除浏览器缓存,然后重试。