Я пытаюсь включить 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.
С уважением.