Habilitando a HttpCompression

1

Estou tentando ativar HttpCompression para Json arquivos, mas o system.WebServer/httpCompression está ausente das opções do editor de configuração no IIS. Eu tenho a configuração aplicada no Web.Config do meu site e funciona bem no meu computador de desenvolvimento (Windows 10 - IIS 10), mas quando implantada no servidor de teste, não funciona.

Estas são as nossas configurações 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" />

Já corri os comandos para desbloquear as secções correspondentes:

%systemroot%\system32\inetsrv\APPCMD unlock config /section:httpCompression

%systemroot%\system32\inetsrv\APPCMD unlock config /section:serverRunTime

Temos os recursos de compactação de conteúdo estático e dinâmico instalados.

O que estamos perdendo? Por que a opção HttpCompression está faltando no Editor de Configuração do site? Por que não está compactando nossos arquivos json no servidor?

Atualizar Nós poderíamos descobrir parte do problema. Estávamos editando o arquivo apphost.config com o Notepad ++ e, por causa do problema descrito nesta postagem , parecia que estávamos editando a versão correta arquivo, mas nós realmente não estávamos. É um problema do conflito de edição de arquivos com um aplicativo de 32 bits. No entanto, parece que o problema não existe mais no Windows 10.

Editamos o arquivo applicationHost.config com o Bloco de Notas e a opção HttpCompression começou a aparecer no Gerenciador do IIS, mas ainda não está funcionando.

    
por Dzyann 23.09.2016 / 20:31

2 respostas

1

O motivo pelo qual você não o vê no servidor 2012 R2 é a seguinte linha em ApplicationHost.config

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

no Windows 10, é assim:

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

no servidor 2016 TP5:

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

AppHostOnly significa que isso só pode ser alterado no ApplicationHost.config

Isso traz algumas perguntas:

Por que isso mudou do IIS 8.5 para o IIS 10, eles fizeram alguma coisa para agora suportar a configuração httpCompression no nível do site, ou foi algo que eles perderam nas versões anteriores do IIS?

Funcionaria se mudássemos para allowDefinition="Everywhere" no IIS 8.5?

Você pode colocar seu nó httpCompression dentro de um nó <location path=...> em applicationhost.config?

Neste momento, não tenho nenhuma resposta, mas pelo menos você sabe por que isso não funciona.

    
por 23.09.2016 / 22:15
0

Encontre o ApplicationHost.config nos arquivos do servidor IIS.

Altere a seção chamada httpCompression.

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

abra o gerenciador do servidor IIS, abra Compactação , Marque Ativar compactação de conteúdo dinâmico Marque Ativar compactação de conteúdo estático

abra o Editor de configuração no painel Gerenciador. Navegue no menu suspenso. System.Webserver - > HttpCompression - > staticCompressionIgnoreHitFrequency definido como True .

System.web - > cache - > outputCache - > OmitVaryStar definido como Verdadeiro .

Espero que isso funcione para o IIS 8.5.

Atenciosamente.

    
por 26.09.2017 / 13:31