Назад | Перейти на главную страницу

Включение HttpCompression

Я пытаюсь включить HttpCompression для 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 не сжимаются на сервере?

Обновить Мы могли бы частично разобраться в проблеме. Мы редактировали файл apphost.config с помощью Notepad ++ и из-за проблемы, описанной в этом Почта казалось, что мы редактируем нужный файл, но на самом деле это не так. Это проблема из-за конфликта редактирования файлов в 32-битном приложении. Однако похоже, что проблема больше не существует в Windows 10.

Мы отредактировали файл applicationHost.config с помощью Блокнота, и параметр HttpCompression начал отображаться в диспетчере IIS, но он все еще не работает.

Причина, по которой вы не видите его на сервере 2012 R2, заключается в следующей строке в ApplicationHost.config

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

в Windows 10 это выглядит так:

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

на сервере 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?

Прямо сейчас у меня нет ответов, но, по крайней мере, вы знаете, почему это не работает.

Найти ApplicationHost.config в файлах сервера IIS.

Измените раздел с именем httpCompression.

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

затем откройте диспетчер серверов IIS, откройте Сжатие, Проверьте Включить сжатие динамического содержимого Проверьте Включить сжатие статического содержимого

затем откройте Редактор конфигурации на панели управления. Перейдите в раскрывающееся меню .. System.Webserver -> HttpCompression -> staticCompressionIgnoreHitFrequency установлен в Правда.

System.web -> кеширование -> outputCache -> OmitVaryStar установлен в Правда.

Надеюсь, это сработает для IIS 8.5.

С уважением.