Итак, я немного IIS7 n00b, но я использовал большинство старых систем IIS, начиная с 3. Я пытаюсь включить динамическое сжатие, и оно работает, в основном. Он не работает для моих запросов ADO.Net Data Service (Astoria), пакетных или нет.
Я нашел трассировку неудавшегося запроса (FREB), которая была действительно полезна. И то, что я вижу на пакетных запросах, это Reason Code 12, NO_MATCHING_CONTENT_TYPE
. Итак, у меня нет соответствующего типа MIME, это просто.
За исключением того, что у меня есть в моем web.config (который я считаю правильным, но, возможно, нет).
<httpCompression dynamicCompressionDisableCpuUsage="100"
dynamicCompressionEnableCpuUsage="100"
noCompressionForHttp10="false"
noCompressionForProxies="false"
noCompressionForRange="false"
sendCacheHeaders="true"
staticCompressionDisableCpuUsage="100"
staticCompressionEnableCpuUsage="100">
<dynamicTypes>
<clear/>
<add mimeType="*/*"
enabled="true" />
</dynamicTypes>
<staticTypes>
<clear/>
<add mimeType="*/*"
enabled="true" />
</staticTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
doStaticCompression="true"
dynamicCompressionBeforeCache="false" />
Теперь я думаю, что это означает, что он должен сжимать любой запрос, содержащий заголовок Accept: Gzip. Я хотел бы знать, что другие могут подумать здесь.
Мой след скрипача:
GET /SecurityDataService.svc/GetCurrentAccount HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;Silverlight
Accept: application/atom+xml,application/xml
maxdataserviceversion: 1.0;Silverlight
Referer: http://sdev03/apptestpage.aspx
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Host: sdev03
Connection: Keep-Alive
Cookie: .ASPXAUTH=<snip>
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.0
DataServiceVersion: 1.0;
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 22 Mar 2010 22:29:06 GMT
Content-Length: 2726
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
*** <snip> removed ***
iis-7
configuration
compression
Питер Элерт
источник
источник
"C:\Windows\System32\Inetsrv\Appcmd.exe" set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/javascript',enabled='True']" /commit:apphost
И снова: после внесенных изменений - вы увидите их только в блокноте. Блокнот ++ (а также редактор Visual Studio 2010 !!)Ответы:
Хорошо, оказывается, вы не можете настроить это в web.config, только appHost.config. Я предположил, что в документации написано appHost.config, но я предположил, что это спецификация общей концепции, а не единственное допустимое расположение конфигурации.
источник
web.config
переопределения настроек сжатия, поэтому вам нужно изменитьapplicationHost.config
. Вместо того, чтобы изменять там параметры сжатия, вы можете просто разрешить переопределения, и вы снова в деле.Питер, спасибо за подсказку - мы также нашли эту настройку
в
<httpCompression>
разделеapplicationHost.config
исправлено это.Нам также пришлось указать кодировку из-за ошибки в коде сжатия:
Вот соответствующий раздел в полном объеме
источник
После новой установки мой
applicationHost.config
(in%windir%\system32\inetsrv\config
) имел следующую настройку:... а также набор типов MIME по умолчанию для сжатия, который, к сожалению, не включает JSON и другие типы данных, которые были бы хорошими кандидатами на сжатие.
Переключение это на:
позволяет настроить
httpCompression
тег подsystem.webServer
тегом в моемweb.config
.Я подтвердил это, установив в
httpCompression
разделеapplicationHost.config
:... и теперь я могу установить все типы MIME, которые я на самом деле хочу сжать в
web.config
.источник
httpCompression
элемент работать наweb.config
уровне в новых версиях IIS, или это невозможно? Документы - это кошмар - в них, похоже, ничего не говорится о том, что сделка является официальной.Чтобы добавить отсутствующие mimetypes из powershell, используйте следующие команды:
Обратите внимание, что порядок mimeTypes важен, поскольку IIS, кажется, берет первое совпадение. Это означает, что mimeTypes с подстановочными знаками (*) должны быть ниже mimeTypes без подстановочных знаков. Поэтому убедитесь, что mimeType
*/*
находится внизу, так как любая запись под ним не будет использоватьсяРедактировать:
IIS отстой, поэтому лучший вариант - просто очистить staticTypes и добавить все обратно в правильном порядке:
источник