我试图为Json文件启用HttpCompression ,但IIS中的configuration编辑器选项中缺lesssystem.WebServer/httpCompression 。 我的configuration应用在我的网站的Web.Config中,并且在我的开发计算机(Windows 10 – IIS 10)中工作正常,但是当部署到testing服务器时,它不起作用。
这些是我们的Web.config设置:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" staticCompressionIgnoreHitFrequency="true" dynamicCompressionDisableCpuUsage="70" dynamicCompressionEnableCpuUsage="50"> <remove name="gzip" /> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" /> <dynamicTypes> <remove mimeType="text/*" /> <remove mimeType="message/*" /> <remove mimeType="application/javascript" /> <remove mimeType="application/json" /> <remove mimeType="image/svg+xml" /> <remove mimeType="*/*" /> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="image/svg+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes> <staticTypes> <remove mimeType="text/*" /> <remove mimeType="message/*" /> <remove mimeType="application/javascript" /> <remove mimeType="application/xml" /> <remove mimeType="image/svg+xml" /> <remove mimeType="*/*" /> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="application/xml" enabled="true" /> <add mimeType="image/svg+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true" /> <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="00:00:05" />
我已经运行命令来解锁相应的部分:
%systemroot%\system32\inetsrv\APPCMD unlock config /section:httpCompression %systemroot%\system32\inetsrv\APPCMD unlock config /section:serverRunTime
我们已经安装了静态和dynamic内容压缩function。
我们缺less什么? 为什么在网站的configuration编辑器中缺lessHttpCompression选项? 为什么不在服务器上压缩我们的json文件?
更新我们可以找出问题的一部分。 我们用Notepad ++编辑apphost.config文件,由于本文描述的问题,似乎我们正在编辑正确的文件,但我们确实没有。 这是编辑文件与32位应用程序冲突的一个问题。 但是,Windows 10似乎不再存在这个问题。
我们使用记事本编辑了applicationHost.config文件,HttpCompression选项开始显示在IISpipe理器中,但仍然不起作用。
在服务器2012 R2上看不到它的原因是ApplicationHost.config的以下行
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
在Windows 10上,它看起来像这样:
<section name="httpCompression" allowDefinition="Everywhere" overrideModeDefault="Allow" />
在服务器2016年TP5:
<section name="httpCompression" overrideModeDefault="Allow" />
AppHostOnly意思是,这只能在ApplicationHost.config中更改
这带来了几个问题:
为什么从IIS 8.5到IIS 10的变化,他们做了些什么来支持网站级别的httpCompressionconfiguration,还是只是在以前的IIS版本中错过的东西呢?
如果我们将其更改为IIS 8.5中的allowDefinition="Everywhere" ,它会起作用吗?
你可以把你的httpCompression节点放在httpCompression一个<location path=...>节点中吗?
现在我没有任何答案,但至less你知道为什么它不起作用。
在IIS服务器文件上findApplicationHost.config 。
更改名为httpCompression的部分。
<section name="httpCompression" allowDefinition="Everywhere" overrideModeDefault="Allow" />
然后打开IIS服务器pipe理器,打开压缩 ,选中启用dynamic内容压缩检查启用静态内容压缩
然后打开“pipe理器”面板上的configuration编辑 导航下拉菜单.. System.Webserver – > HttpCompression – > staticCompressionIgnoreHitFrequency设置为True 。
System.web – >caching – > outputCache – > OmitVaryStar设置为True 。
希望这适用于IIS 8.5。
最好的祝福。