静态文件的压缩是动态处理的,而 IIS 认为该文件不常见。一旦文件被认为是频繁的,它将被压缩和缓存。缓存的版本将继续提供,直到它再次变得不常见。您可以在 IIS 中使用 2 个配置设置来配置常用文件:
system.webServer/serverRuntime:
frequentHitThreshold
: 同一个文件应该被请求多少次,才会被认为是频繁和缓存?默认为 2。
frequentHitTimePeriod
: 同一文件应该被请求 {frequentHitThreshold} 次的时间间隔,以便被缓存。默认为 10 秒。
请注意,无论您设置的频繁HitTimePeriod 是多少,如果在 1 分钟后没有请求频繁文件,它总是会变得不频繁。我不知道配置中是否有此设置。
例如,设置frequentHitThreshold
为 1 将意味着 IIS 始终认为该文件是频繁的,即使从第一个请求开始也是如此。这将反过来绕过动态压缩并仅通过静态压缩处理。
staticCompressionIgnoreHitFrequency
或者,您可以通过设置为 true 来完全绕过命中频率:
appcmd set config -section:system.webServer/httpCompression /staticCompressionIgnoreHitFrequency:"True"
请注意,动态(默认 0)和静态(默认 7)压缩的压缩级别不同,因此将返回 2 个不同的文件大小。
这也是我首先遇到这个问题的原因:即使您对两者使用相同的级别,动态和静态压缩之间的同一文件的 ETag 也是不同的。
希望这可以帮助。