我正在尝试启用Http压缩适用于Json
文件,但system.WebServer/httpCompression
IIS 中的配置编辑器选项中缺少。我已将配置应用于Web.Config
我的站点,并且它在我的开发计算机(Windows 10 - IIS 10)上运行良好,但部署到测试服务器时它不起作用。
这些是我们的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
我们已经安装了静态和动态内容压缩功能。
我们遗漏了什么?为什么站点的配置编辑器中缺少 HttpCompression 选项?为什么不在服务器上压缩我们的 json 文件?
更新 我们可以找出部分问题。我们使用 Notepad++ 编辑 apphost.config 文件,由于本文中描述的问题邮政看起来我们编辑的是正确的文件,但实际上并非如此。这是由于使用 32 位应用程序编辑文件时发生冲突而导致的问题。不过,Windows 10 中似乎不再存在此问题。
我们使用记事本编辑了 applicationHost.config 文件,HttpCompression 选项开始显示在 IIS 管理器中,但它仍然不起作用。
答案1
在服务器 2012 R2 上看不到它的原因是ApplicationHost.config
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
在 Windows 10 上它看起来像这样:
<section name="httpCompression" allowDefinition="Everywhere" overrideModeDefault="Allow" />
在 Server 2016 TP5 上:
<section name="httpCompression" overrideModeDefault="Allow" />
AppHostOnly
意味着,这只能在 ApplicationHost.config 中更改
这引出了几个问题:
为什么从 IIS 8.5 到 IIS 10 会发生这种变化,他们是否做了一些事情来支持站点级别的 httpCompression 配置,或者这只是他们在以前的 IIS 版本中遗漏的东西?
如果我们将其更改为allowDefinition="Everywhere"
IIS 8.5,它会起作用吗?
您能将您的httpCompression
节点放在<location path=...>
applicationhost.config 中的节点内吗?
现在我还没有任何答案,但至少你知道为什么它不起作用。
答案2
找出应用程序主机配置在 IIS 服务器文件上。
更改名为 httpCompression 的部分。
<section name="httpCompression" allowDefinition="Everywhere" overrideModeDefault="Allow" />
然后打开IIS服务器管理器,打开压缩, 查看启用动态内容压缩 查看启用静态内容压缩
然后打开配置编辑器在管理面板上。导航下拉菜单..System.Webserver -> HttpCompression ->静态压缩忽略命中频率设置真的。
System.web->缓存->outputCache->省略VaryStar设置真的。
希望这对 IIS 8.5 有效。
此致。