【问题标题】:Enable Compression Mime-types for Web-Site Application为网站应用程序启用压缩 Mime 类型
【发布时间】:2016-05-06 10:00:23
【问题描述】:

我们的网站同时使用动态和静态压缩。我知道可以在 web.config 级别启用/禁用压缩,但不能在 web-config 级别启用静态和动态压缩的 mime 类型。

意思,本节:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" staticCompressionIgnoreHitFrequency="true">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
    <staticTypes>
        Stuff
    </staticTypes>
    <dynamicTypes>
        Stuff
    </dynamicTypes>
</httpCompression>

必须进入applicationHost.config,一般使用appcmd.exe编辑。

我知道 applicationHost.config 中有一个 location 元素,它允许在每个网站的基础上设置许多东西,但如果动态压缩的 mimetype 是其中之一,我似乎找不到任何地方。

我尝试使用 location 元素覆盖这些设置,但没有任何成功,也找不到说明 httpCompression 元素可能的文档。

更糟糕的是,我们将产品作为 Web 应用程序安装在默认站点下,因此我们确实希望仅在我们的应用程序下启用这些动态压缩 mime 类型,而不是在站点(或服务器)范围内启用。这可能吗?

通常,我们使用的是 IIS 7 及更高版本。现在我们的最小值是 7,所以假设任何东西都需要使用它。

我的问题是:

httpCompression 是否可以在每个网站的 applicationHost.config 中设置,并且可以在网站下的每个 Web 应用程序中设置?

是否有其他方法可以在网站/Web 应用程序级别启用动态压缩特性?

【问题讨论】:

    标签: iis http-compression


    【解决方案1】:

    是的,您可以很好地在 Web 应用程序的 web.config 文件中添加动态和静态类型。 ApplicationHost.config 将定义全局压缩设置,如果您想在应用程序中覆盖它们,您可以这样做。以下是我的一个应用程序的示例。

    <system.webServer>
    <modules>
      <remove name="FormsAuthentication" />
      <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />
      <remove name="UrlRoutingModule-4.0" />
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <add name="Glimpse" path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" preCondition="integratedMode" />
    </handlers>
        <httpCompression>
            <dynamicTypes>
                <remove mimeType="text/*" />
                <add mimeType="application/json" enabled="true" />
            </dynamicTypes>
        </httpCompression>
    

    1. 这里删除动态类型中的标记会删除来自 ApplicationHost.config 的全局条目
    2. add 标记是在 applicationHost.config 的全局条目之上添加额外的 mimeType。此添加仅适用于正在修改 web.config 的用户。

    同样,您也可以修改 staticTypes。

    【讨论】:

    • 您确定它实际上是根据这些设置启用的吗?我问基于两件事: 1. 此链接support.microsoft.com/en-us/kb/969062 指出只能在 Web 服务器级别添加 mime 类型。 2.我尝试添加您上面的内容,但没有成功。
    【解决方案2】:

    只是一个重要的精度:有一个先决条件来确保您可以在 "web.config" 文件中添加 MIME 类型:

    可以在网站级别的 部分中添加 MIME 类型(在 “web.config”中 strong>) 仅当在 "applicationHost.config" 级别明确允许这样做,如this solution from Stack Overflow 中所述:

    需要注意的重要一点是,修改您的 applicationHost.config(在 %windir%\system32\inetsrv\config 中)来自以下设置:

    <section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
    

    到:

    <section name="httpCompression" overrideModeDefault="Allow" />
    

    将启用 httpCompression 标签下的配置 web.config 中的 system.webServer 标记。

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 1970-01-01
      • 2015-12-01
      • 2020-10-16
      • 2012-02-27
      • 2012-05-08
      • 2017-11-26
      • 2016-09-13
      • 2017-12-13
      相关资源
      最近更新 更多