Besoin d'aide avec certains paramètres de compression web.config IIS7

9

J'essaie de configurer mes paramètres de compression IIS7 dans mon fichier web.config. J'essaie d'activer les requêtes HTTP 1.0 pour être gzip.

MSDN a toutes les informations à ce sujet ici .

Est-il possible d'avoir ces informations de configuration dans le fichier web.config de mon propre site Web? Ou dois-je le définir au niveau de l'application? Actuellement, j'ai ce code dans mon web.config ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

Cela ne fonctionne pas :( Les ​​requêtes HTTP 1.1 sont compressées, mais pas 1.0.

Cette page MSDN ci-dessus dit qu'elle peut être utilisée dans: -

  • Machine.config
  • ApplicationHost.config
  • Application racine Web.config
  • Application Web.config
  • Répertoire Web.config

Alors, pouvons-nous définir ces paramètres par site Web, par programme dans un fichier web.config? (il s'agit d'un fichier Application Web.config ...) Qu'est-ce que j'ai fait de mal?

à votre santé :)

EDIT: on m'a demandé comment je sais que HTTP1.0 n'est pas compressé. J'utilise les règles de suivi des demandes ayant échoué, qui rendent compte: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END
Pure.Krome
la source

Réponses:

3

Faites très attention au fait que le paramètre web.config IIS 7.x de

noCompressionForProxies="false"

N'est pas honoré au niveau de web.config. Il doit être défini dans C: \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config comme suit:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

Assurez-vous et effectuez une réinitialisation IIS après avoir modifié le paramètre.

Une demande est déterminée comme provenant d'un proxy par IIS si la demande Web du client a l'en-tête HTTP "Via" comme suit:

Via: 1.1 foo
evermeire
la source
Vous pouvez également utiliser appcmdpour définir les paramètres de niveau d'application (ce qui est probablement beaucoup plus facile).
Pure.Krome
2

Après un peu de recherche, il est «verrouillé» par défaut au niveau de l'application. En tant que tel, il doit être «déverrouillé». ceci peut être réalisé via la ligne de commande ou via les outils d'administration (téléchargement supplémentaire) iis7.

par exemple. appcmd set config -section:urlCompression /doDynamicCompression:true

Réfrences:

Pure.Krome
la source
1

Comment testez-vous que les requêtes HTTP1.0 ne sont pas compressées? Serait-ce que le client que vous utilisez ne dit pas au serveur qu'il peut accepter une réponse compressée?

Si vous pouvez voir les en-têtes envoyés par le client (présentés par le client de test lui-même, en utilisant Firebug ou similaire si vous testez dans Firefox ou IEHTTPHeaders si vous testez dans IE, ou en reniflant le trafic à l'aide d'un outil externe), vous devriez voir quelque chose comme

Accept-Encoding: compress, gzip, deflate

quelque part. Si le client n'informe pas le serveur qu'il peut accepter une réponse compressée, le serveur n'en enverra pas, quels que soient les autres paramètres que vous avez côté serveur.

Un autre problème pourrait se poser si vous testez via un serveur proxy qui s'est identifié comme tel. Dans ce cas, le paramètre noCompressionForProxies peut avoir la priorité et bloquer la possibilité d'une réponse compressée.

Une chose à noter est que certains clients et mandataires qui envoient des requêtes HTTP1.0 (généralement des logiciels plus anciens) ne géreront pas correctement une réponse compressée s'ils en obtiennent une, donc si vous activez la compression pour les réponses aux requêtes HTTP1.0, assurez-vous que vous testez votre site / application dans tous les logiciels client / proxy que vous attendez des visiteurs / utilisateurs. C'est moins un problème si vous pouvez garantir que votre public cible utilisera certains logiciels (si, par exemple, l'application est destinée à un réseau d'entreprise interne uniquement), mais sinon, il existe de nombreuses combinaisons à tester, c'est pourquoi la plupart des serveurs désactivent la compression pour 1.0 demande complètement.

David Spillett
la source
Je teste que les requêtes HTTP1.0 ne sont pas compressées à l'aide des règles de suivi des demandes ayant échoué, qui indiquent: - DYNAMIC_COMPRESSION_START DYNAMIC_COMPRESSION_NOT_SUCESS Raison: 3 Raison: NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome