Então, eu sou um pouco do IIS7 n00b, mas usei a maioria dos sistemas antigos do IIS voltando ao 3. Estou tentando ativar a compactação dinâmica e está funcionando, principalmente. Ele não funciona para minhas solicitações do ADO.Net Data Service (Astoria), em lote ou não.
Encontrei o rastreamento de solicitação com falha (FREB) que foi realmente útil. E o que eu vejo nos pedidos não corrigidos é Reason Code 12, NO_MATCHING_CONTENT_TYPE
. OK, então não tenho o tipo MIME correspondente especificado, é fácil.
Exceto que é isso que tenho no meu web.config (que acho correto, mas talvez não).
<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" />
Agora, acho que isso significa que ele deve compactar qualquer solicitação que inclua o cabeçalho Accept: Gzip. Eu adoraria saber o que os outros podem pensar aqui.
Meu rastro de violinista:
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 ***
fonte
"C:\Windows\System32\Inetsrv\Appcmd.exe" set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/javascript',enabled='True']" /commit:apphost
E novamente: após essas alterações, você as verá apenas no bloco de notas. Notepad ++ (assim como o editor do Visual Studio 2010 !!)Respostas:
OK, acontece que você não pode configurar isso no web.config, apenas no appHost.config. Supunha que os documentos dissessem appHost.config, mas supus que fosse uma especificação de um conceito geral, não o único local de configuração permitido.
fonte
web.config
substituições das configurações de compactação, e é por isso que você precisa modificar o arquivoapplicationHost.config
. Em vez de alterar as configurações de compactação, no entanto, você pode permitir substituições e voltar aos negócios.Peter, obrigado pela dica - também descobrimos essa configuração
na
<httpCompression>
seção deapplicationHost.config
corrigido isso.Também tivemos que especificar a codificação devido a um erro no código de compactação:
Aqui está a seção relevante na íntegra
fonte
Em uma nova instalação, meu
applicationHost.config
(in%windir%\system32\inetsrv\config
) tinha a seguinte configuração:... bem como um conjunto padrão de tipos MIME para compactar que, infelizmente, não inclui JSON e outros tipos de dados que seriam bons candidatos à compactação.
Mudando isso para:
ativa a configuração da
httpCompression
tag sob asystem.webServer
tag em myweb.config
.Confirmei isso definindo a
httpCompression
seção doapplicationHost.config
para:... e agora eu posso definir todos os tipos MIME que realmente quero compactar no
web.config
.fonte
httpCompression
elemento funcione emweb.config
nível nas versões mais recentes do IIS ou é impossível? Os documentos são um pesadelo - não parece dizer qual é o acordo oficial.Para adicionar tipos de mimet ausentes do PowerShell, use os seguintes comandos:
Observe que a ordem dos mimeTypes é importante, pois o IIS parece ter a primeira correspondência. Isso significa que mimeTypes com caracteres curinga (*) deve estar abaixo de mimeTypes sem caracteres curinga. Portanto, verifique se o mimeType
*/*
está na parte inferior, pois qualquer entrada abaixo dele não será usadaEditar:
Como o IIS é péssimo, a melhor opção é limpar os staticTypes e adicionar tudo de novo na ordem correta:
fonte