gpt4 book ai didi

asp.net - 为什么 IIS 压缩无法识别我设置的 MIME 类型?

转载 作者:行者123 更新时间:2023-12-03 03:13:47 25 4
gpt4 key购买 nike

我正在将 ASP.NET 5/MVC 6 Web 应用发布到基本 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/htmltext/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 类型在末尾没有星号的情况下不匹配,但我不确定它是什么。它没有通过响应。有谁知道这个神秘的字符串可能来自什么?

最佳答案

尝试设置staticCompressionIgnoreHitFrequency = 'True'

这是文档中 httpCompression 节点的一部分:

If True, disables the behavior that a static file is compressed only if it is hit a certain number of times within a time period.

还有其他几个设置可以控制何时打开或关闭静态压缩。

来自:http://www.iis.net/configreference/system.webserver/httpcompression

关于asp.net - 为什么 IIS 压缩无法识别我设置的 MIME 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com