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

IIS静态压缩不支持Gzip或缓存文件,iis,web-config,compression,gzip,Iis,Web Config,Compression,Gzip,我有一个ASP.NET网站,我正试图为其启用静态压缩。我的网站有以下压缩配置 <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" staticCompressionEnableCpuUsage="0" staticCompressionDisableCpuUsage="100" staticCompressionIgnoreHitFrequency="true">

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

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" staticCompressionEnableCpuUsage="0" staticCompressionDisableCpuUsage="100" staticCompressionIgnoreHitFrequency="true">
  <clear/>
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="10" dynamicCompressionLevel="3" />
  <scheme name="deflate" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="10" dynamicCompressionLevel="3" />
  <staticTypes>
    <clear/>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="false"  dynamicCompressionBeforeCache="false" />

,

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

我的web服务器的进程负载相当重,因此这将是一个不必要的负担。通过静态压缩是有吸引力的,因为压缩的文件被缓存在磁盘上

但是,即使在连续刷新localhost页面(Ctrl+F5)并等待15分钟以上查看压缩目录之后,也不会缓存任何内容

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

安装了动态压缩和静态压缩。“动态”已关闭。如果启用动态压缩,我会看到gzip HTTP响应头返回

我错过了什么?为什么静态压缩不起作用

IIS 10

您看过以下内容吗:

从你的问题看不出什么背景。。。但对我来说,这起作用了

由asp.net mvc缓存,因为它是多个js文件的捆绑包。我猜IIS可以看到它不是磁盘上的静态文件,这就是它是动态的原因

此外,还可以帮助您了解id对js文件的实际作用,以了解它为什么没有在我发布的链接中进行压缩

我还看到你发布的链接中有一行:

与静态压缩不同,IIS 7在客户端每次请求内容时都执行动态压缩,但压缩版本不会缓存到磁盘。进行此更改是因为静态内容和动态内容之间存在主要差异。静态内容不变。但是,动态内容通常是由应用程序创建的内容,因此会经常更改,例如活动服务器页面(ASP)或ASP.NET内容。由于动态内容应该经常更改,IIS7不会缓存它


也试着阅读这篇文章:

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

  • gzip仅在启用动态压缩时工作(因为.Net应用程序正在为文件提供服务)
  • 关闭
    runAllManagedModulesForAllRequests
    (在
    modules
    元素上)会导致静态文件变成404错误——基本上就是IIS看不到文件的问题

为了修复它,我将重写规则从
/{R:1}
更改为
/wwwroot/{R:1}

如果您的staticCompressionEnableCpuUsage设置为0,它将永远不会打开: