Включить Mime-типы сжатия для приложения веб-сайта

Наш сайт использует как динамическое, так и статическое сжатие. Я знаю, что сжатие может быть включено / отключено на уровне 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.

Я знаю, что есть location элемент applicationHost.config, который позволяет устанавливать множество параметров для каждого веб-сайта, но я не могу найти нигде, если mimetypes для динамического сжатия являются одним из них.

Я попытался переопределить эти настройки, используя элемент location, но не добился успеха и не могу найти документацию, подтверждающую, что это возможно для httpCompression элемент.

Что еще хуже, мы устанавливаем наш продукт как веб-приложение на сайте по умолчанию, поэтому на самом деле мы хотим, чтобы эти динамические MIME-типы сжатия были включены только для нашего приложения, а не для всего сайта (или сервера). Это возможно?

Как правило, мы используем IIS 7 и выше. Прямо сейчас наш минимум равен 7, поэтому предположим, что с этим нужно что-то делать.

Мой вопрос: может httpCompression настройки будут установлены в applicationHost.config для каждого веб-сайта и возможны ли для каждого веб-приложения на веб-сайте? Есть ли другой способ включить динамические особенности сжатия на уровне веб-сайта / веб-приложения?

Спасибо

2 ответа

Просто важная точность: есть одно условие, чтобы гарантировать, что вы можете добавить MIME-типы в файл "web.config":

Добавлять MIME-типы в разделы и на уровне веб-сайта (в "web.config") можно только в том случае, если это явно разрешено на уровне "applicationHost.config", как объяснено в этом решении от Stackru: /questions/3566974/nevozmozhno-poluchit-iis7-dlya-gzip-shriftovyih-shriftov/3566980#3566980:

Важно отметить, что изменив ваш applicationHost.config (в%windir%\system32\inetsrv\config) из следующего параметра:

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

чтобы:

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

включит настройку тега httpCompression под тегом system.webServer в вашем файле web.config.

Да, вы можете очень хорошо добавить динамические и статические типы в файл 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. Здесь remove tag в dynamicTypes удаляет глобальную запись, поступающую из ApplicationHost.config
  2. Тег add добавляет дополнительный mimeType поверх глобальных записей из applicationHost.config. Это дополнение будет применимо только для тех, чей web.config изменяется.

Точно так же вы можете изменить staticTypes.

Другие вопросы по тегам