我正在将ASP.NET 5 / MVC 6 Web应用程序发布到Basic Azure实例。默认情况下,我的CSS返回gzip编码,但我的javascript不是。
要诊断这一点,我已添加,然后将web.config
部署到我的webroot:
<configuration>
<system.webServer>
<httpCompression>
<staticTypes>
<clear />
</staticTypes>
<dynamicTypes>
<clear />
</dynamicTypes>
</httpCompression>
</system.webServer>
</configuration>
当我发布上述web.config
时,所有压缩都会按预期停止。
然后我更改了以下部分:
<staticTypes>
<clear />
<add mimeType="*/*" enabled="true" />
</staticTypes>
<dynamicTypes>
<clear />
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
现在一切都是gzip编码的;我的CSS,javascript,html,webfonts,svgs等。
接下来,我将其限制为仅文本编码:
<staticTypes>
<clear />
<add mimeType="text/*" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
<dynamicTypes>
<clear />
<add mimeType="text/*" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
这再次按预期工作,gzip编码我的css(text/css
)和我的html(text/html
和text/html; charset=utf-8
),但没有别的。
这是我不明白的。以下更改无效:
<staticTypes>
<clear />
<add mimeType="text/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/javascript; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
<dynamicTypes>
<clear />
<add mimeType="text/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/javascript; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
我已经检查并仔细检查过我的javascript确实被返回为application/javascript
。为了更好的衡量,我还包括了uft-8变体。
显然,我的web.config
以某种方式受到尊重,因为我可以完全关闭它。显然,IIS能够压缩javascript等等,因为我可以完全打开它。我的配置中缺少什么使我无法仅设置要压缩的特定mime类型?
修改
我尝试了以下操作,为mime类型添加了星星,现在正在运行:
<staticTypes>
<clear />
<add mimeType="text/*" enabled="true" />
<add mimeType="application/javascript*" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
<dynamicTypes>
<clear />
<add mimeType="text/*" enabled="true" />
<add mimeType="application/javascript*" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
显然有一些尾随字符串导致mime类型不匹配而没有最后的星号,但我不确定它是什么。它没有通过回应。有谁知道这个神秘的字符串是什么?
答案 0 :(得分:1)
尝试设置staticCompressionIgnoreHitFrequency = 'True'
这是文档中的httpCompression节点的一部分:
如果为True,则禁用静态文件仅在一段时间内被击中一定次数时被压缩的行为。
还有其他一些设置可以控制何时打开或关闭静态压缩。
来自:http://www.iis.net/configreference/system.webserver/httpcompression