Я пытаюсь включить динамическое сжатие для типа пантомимы application/json
.
В applicationHost.config я внес следующие изменения:
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />
Я также попытался разблокировать раздел с помощью следующей команды:
appcmd unlock config /section:system.webserver/httpcompression
Мои настройки web.config (такие же, как applicationHost.config, но с дополнительным типом mimetype):
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
</httpCompression>
Но ответ не архивируется. Я знаю, что настройки верны, так как это работает, если я добавлю mimetype непосредственно в applicationHost.config.
Я включил отслеживание неудачных запросов, и никаких ошибок не возникает.
Попробуйте также добавить тип пантомимы:
<add mimeType="application/json; charset=utf-8" enabled="true" />
У меня такая же проблема, то есть я пытаюсь получить IIS (IIS 10 в моем случае) для gzip application/json
но нашли обходной путь.
Я безуспешно пытался редактировать ApplicationHost.config, а также web.config. IIS просто игнорирует любые настройки сжатия для данных .json. Однако он с радостью заархивирует любой другой mimetype, который вы ему укажете. Поэтому я изменил тип mimetype на text/json
в web.config, и теперь у меня есть сжатые ответы:
<system.webServer>
<staticContent>
<remove fileExtension=".json" />
<mimeMap fileExtension=".json" mimeType="text/json" />
</staticContent>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/json" enabled="true"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/json" enabled="true"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
Конечно, это может сломать другие вещи - потому что теперь ваш ответ Content-Type:text/json
HttpCompression из web.config возможно, только если вы используете IIS 10. В IIS 7.5 вам нужно будет использовать его в appHost.config.
Я тоже боролся с этим, пока не нашел эту информацию на этом посте.