如果启用静态压缩,IIS中的gzip js不会被压缩

时间:2013-02-10 09:12:43

标签: iis-7.5 gzip squishit

我已经使用Squishit来缩小和捆绑JS并在IIS 7.5中压缩Bundled file I enabled选项(启用静态内容压缩)

问题是Js没有得到压缩,我只是得到了缩小的js但是如果我启用了动态内容压缩,那么Js就会被压缩。

现在动态压缩的问题在于它不会缓存文件,并且在每次请求时都必须进行CPU占用时间的压缩。

有人可以帮我解释为什么js不会在静态内容压缩模式下被压缩

这是在客户端发送js的理想方式

JS -> Minify JS (Squishit) -> Compress (Static /Dynamic)

1 个答案:

答案 0 :(得分:8)

静态文件的压缩是动态处理的,而IIS认为该文件是不常用的。一旦文件被视为频繁,它将被压缩和缓存。缓存版本将继续提供,直到它再次变得罕见。您可以在IIS中使用2个配置设置来配置频繁文件:

<强> system.webServer / serverRuntime中:

  • frequentHitThreshold:在考虑频繁和缓存之前,应该请求同一个文件多少次?默认为2。
  • frequentHitTimePeriod:应该请求相同文件的时间间隔{frequentHitThreshold}次,以便进行缓存。默认为10秒。

请注意,无论您设置的frequentHitTimePeriod如何,如果1分钟后没有请求,频繁的文件将始终不常用。我不知道配置中是否有这样的设置。

例如,将frequentHitThreshold设置为1意味着IIS始终认为该文件是频繁的,即使是第一个请求也是如此。这将绕过动态压缩,只能通过静态压缩来处理。

或者您可以通过将staticCompressionIgnoreHitFrequency设置为true来完全绕过命中频率:

appcmd set config -section:system.webServer/httpCompression /staticCompressionIgnoreHitFrequency:"True"

请注意,动态(默认为0)和静态(默认为7)压缩的压缩级别不同,因此会返回2种不同的文件大小。

此外,这也是我首先涉及这个问题的原因:同一文件的ETag在动态和静态压缩之间是不同的,即使你对两者都使用相同的级别。

希望这有帮助。