一部のIIS7 web.config圧縮設定についてサポートが必要


9

IIS7圧縮設定をweb.configファイルで構成しようとしています。HTTP 1.0リクエストをgzipにできるようにしています。

MSDNにはそれに関するすべての情報がここにあります

この構成情報を自分のWebサイトのweb.configファイルに含めることはできますか?または、アプリケーションレベルで設定する必要がありますか?現在、私は自分の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>

それは機能していません:( HTTP 1.1リクエストは1.0ではなく圧縮されています。

上記のMSDNページは、それがで使用することができると言います:-

  • Machine.config
  • ApplicationHost.config
  • ルートアプリケーションWeb.config
  • アプリケーションWeb.config
  • ディレクトリWeb.config

それで、これらの設定をweb.configファイルでプログラム的にWebサイトごとに設定できますか?(これはアプリケーションのWeb.configファイルです...)何が間違っていますか?

乾杯:)

編集:HTTP1.0が圧縮されていないことを確認する方法を尋ねられました。失敗したリクエストトレースルールを使用しています。

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

回答:


3

IIS 7.xのweb.config設定が

noCompressionForProxies="false"

web.configレベルでは受け入れられません。次のようにC:\ Windows \ System32 \ inetsrv \ config \ ApplicationHost.configに設定する必要があります。

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

設定を変更したら、必ずIISのリセットを実行してください。

クライアントのWebリクエストに次のようなHTTP "Via"ヘッダーがある場合、リクエストはIISによってプロキシからのものであると判断されます。

Via: 1.1 foo

を使用appcmdしてアプリケーションレベルの設定を行うこともできます(これはおそらくはるかに簡単です)。
Pure.Krome、2011年

2

かなりの調査の後、デフォルトでアプリケーションレベルで「ロック」されます。そのため、「ロック解除」する必要があります。これは、コマンドラインまたは(追加ダウンロード)iis7管理ツールを使用して実行できます。

例えば。 appcmd set config -section:urlCompression /doDynamicCompression:true

屈折:


1

HTTP1.0リクエストが圧縮されていないことをどのようにテストしていますか?使用しているクライアントがサーバーに圧縮された応答を受け入れることができることを伝えていない可能性がありますか?

クライアントから送信されたヘッダーを確認できる場合(テストクライアント自体によって提示され、Firebugなどを使用してFirefoxでテストしている場合、またはIEHTTPHeadersをIEでテストしている場合、または外部ツールを使用してトラフィックをスニッフィングして)、のようなものを見る

Accept-Encoding: compress, gzip, deflate

どこかに。クライアントが圧縮された応答を受け入れることができることをサーバーに通知しない場合、サーバーは、サーバー側の他の設定に関係なく、応答を送信しません。

別の問題は、それ自体を識別したプロキシサーバーを介してテストしている場合です。この場合、noCompressionForProxies設定が優先され、圧縮された応答の可能性をブロックする可能性があります。

注意すべきことの1つは、HTTP1.0要求(通常は古いソフトウェア)を送信する一部のクライアントとプロキシは、圧縮応答を取得すると正しく応答しないため、HTTP1.0要求への応答に対して圧縮を有効にする場合は、訪問者/ユーザーが使用することを期待するすべてのクライアント/プロキシソフトウェアでサイト/アプリケーションをテストします。ターゲットオーディエンスが特定のソフトウェアを使用することを保証できる場合(たとえば、アプリが社内ネットワークのみを対象としている場合)、これはそれほど問題ではありませんが、それ以外の場合、テストする多くの組み合わせがあるため、ほとんどのサーバーで圧縮が無効になります。 1.0は完全に要求します。


NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END:DYNAMIC_COMPRESSION_STARTのDYNAMIC_COMPRESSION_NOT_SUCESS理由:3理由- :私はHTTP1.0要求が戻って報告する失敗した要求トレースの規則、使用して圧縮取得されていないことをテストしています
Pure.Krome
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.