如果有人能帮忙,我将不胜感激。我想在 IIS7 中启用静态文件的压缩(为了简单起见,我暂时只引用静态 css 文件)。
我遇到的问题是,只有当网站的 IIS 中同时启用了动态和静态压缩时,css 文件才会被压缩。我真正想要实现的是 css 压缩(静态文件),同时暂时不压缩动态(aspx)页面(以避免不必要的 CPU 负载)。
我很困惑为什么仅仅启用“静态压缩”就会导致 css 文件未压缩地返回。
我的 applicationHost.config 文件没有被更改并且看起来像这样:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<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="*/*" enabled="false" />
</staticTypes>
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
</httpCompression>
在服务器 > 功能 > 压缩页面中,IIS 中的服务器范围压缩设置为“动态禁用”和“静态启用”。
我在网站压缩设置(服务器 > 网站 > 我的网站 > 功能 > 压缩)中启用和禁用动态压缩,如上所述。
任何帮助都会真正帮助我摆脱这一困境。
谢谢
答案1
您的 CSS 文件很可能由动态内容处理程序提供,这意味着 IIS 会将其视为动态内容。如果 .CSS 文件直接映射到 StaticFileHandler,只要 mime 类型正确,它们可能会与其他静态内容一起压缩。
要确定情况是否如此:
打开站点的失败请求跟踪,并启用跟踪 200 个响应的规则。
打开与 .CSS 请求对应的失败请求日志文件,并检查调用了哪些处理程序来生成文件,以及是否认为需要压缩。通配符脚本映射通常是导致此类行为的原因。
如果在 oftenHitTimePeriod 内得分不超过 frequencyHitThreshold 请求(如果记忆不错的话,通常为 10 秒内 2 次),则内容可能不会被压缩,直到突破该阈值 - 压缩和缓存使用相同的阈值。