我有一个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
答案 0 :(得分:0)
从你的问题来看,没有多少背景......但对我来说,这很有用。
由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应用程序时,该应用程序将看到该文件并提供服务。因此,这两个症状是:
runAllManagedModulesForAllRequests
(在modules
元素上)导致我们的静态文件变成404错误-从根本上解决了IIS无法看到文件的问题。要解决此问题,我将重写规则从./{R:1}
更改为./wwwroot/{R:1}
。