IIS静态压缩不是Gzip或缓存文件

时间:2017-08-24 02:15:55

标签: iis web-config compression gzip

我有一个ASP.NET网站,我试图为其启用静态压缩。我的网站具有以下压缩配置。

Enter the expenses (separated by spaces): 12 34 56
12
34
56
Total: $102

想要启用动态压缩。根据{{​​3}},

  

与静态压缩不同,IIS 7每次客户端请求内容时都会执行动态压缩,但压缩版本不会缓存到磁盘。

我的网络服务器负载过程非常繁重,因此这将是一个不必要的负担。静态压缩很吸引人,因为压缩文件缓存在磁盘上。

但是,即使在连续刷新localhost页面(Ctrl + F5)并等待15 +分钟观看压缩目录后,也没有任何缓存。

此外,没有任何相关文件(css / js / html)使用gzip压缩标头返回。

安装了动态和静态压缩。动态关闭。如果我打开动态压缩,我会开始看到gzip HTTP响应头回来。

我错过了什么?为什么静态压缩拒绝工作?

IIS 10

2 个答案:

答案 0 :(得分:0)

你看过这个:https://blogs.msdn.microsoft.com/friis/2017/09/05/iis-dynamic-compression-and-new-dynamic-compression-features-in-iis-10/

从你的问题来看,没有多少背景......但对我来说,这很有用。

由asp.net mvc缓存,因为它是一组多个js文件。我想IIS可以看到它不是磁盘上的静态文件,因为它是动态的。

还有助于查看id实际上对你的js文件做了什么,以找出它在我发布的链接中没有进行压缩的原因。

我还在您发布的链接中看到了一行:

  

与静态压缩不同,IIS 7每次客户端请求内容时都会执行动态压缩,但压缩版本不会缓存到磁盘。由于静态和动态内容之间的主要区别,因此进行了此更改。静态内容不会改变。但是,动态内容通常是由应用程序创建的内容,因此经常更改,例如Active Server Pages(ASP)或ASP.NET内容。由于动态内容应经常更改,因此IIS 7不会对其进行缓存。

也尝试阅读这篇文章:https://forums.iis.net/t/1071156.aspx

答案 1 :(得分:0)

我遇到了这个问题,并找到了错误的URL重写规则。静态资产位于C:\inetpub\wwwroot\MyProject\wwwroot中,并且重写规则将^assets/(.*)更改为./{R:1},因此IIS正在查看MyProject的顶部而不找到文件。但是,当将请求移交给.Net应用程序时,该应用程序将看到该文件并提供服务。因此,这两个症状是:

  • gzip仅在启用动态压缩时才起作用(因为.Net应用正在提供文件)。
  • 关闭runAllManagedModulesForAllRequests(在modules元素上)导致我们的静态文件变成404错误-从根本上解决了IIS无法看到文件的问题。

要解决此问题,我将重写规则从./{R:1}更改为./wwwroot/{R:1}