2

CDNを通過する静的コンテンツがいくつかあります。静的コンテンツにIIS6の組み込み圧縮(gzipとdeflate)を使用していますが、これは要求すると正常に機能します。ただし、CDNがコンテンツの最初のリクエストを行うとき、コンテンツは圧縮されて返されません。したがって、それを要求する人々に転送するための圧縮されたコンテンツはありません。(はい、これにより、圧縮を処理できないブラウザを使用してCDNに[zip形式の]コンテンツを要求するという問題が発生します。-とりあえずこれを片側に置きます)

'Via'ヘッダーなしでリクエストする例を次に示します。

    HEAD /flash/swfobject.js HTTP / 1.1  
    ユーザーエージェント:curl / 7.19.7(i386-pc-win32)  
    ホスト:localhost:9120  
    承認: */*  
    接続:Keep-Alive  
    accept-encoding:gzip  

そして、圧縮された応答を返します。

    HTTP / 1.1 200 OK
    コンテンツ-長さ:4357
    コンテンツタイプ:application / x-javascript
    コンテンツエンコーディング:gzip
    有効期限:2020年1月1日水曜日00:00:00 GMT
    最終変更日:2009年11月18日水曜日15:36:52 GMT
    Accept-Ranges:バイト
    変更:Accept-エンコーディング
    サーバー:Microsoft-IIS / 6.0
    日付:2009年11月19日木曜日10:27:50 GMT

ただし、(CDNのように)リクエストに「Via」ヘッダーを含めると、結果は圧縮されずに返されます。

リクエスト:

    HEAD /flash/swfobject.js HTTP / 1.1
    ユーザーエージェント:curl / 7.19.7(i386-pc-win32)
    ホスト:localhost:9120
    承認: */*
    接続:Keep-Alive
    経由:1.1 204.160.105.17:80(フットプリント4.5 / FPMCP)
    accept-encoding:gzip

応答:

 
    HTTP / 1.1 200 OK
    コンテンツ-長さ:14602
    コンテンツタイプ:application / x-javascript
    有効期限:2020年1月1日水曜日00:00:00 GMT
    最終変更日:2009年11月18日水曜日15:36:54 GMT
    Accept-Ranges:バイト
    サーバー:Microsoft-IIS / 6.0
    日付:2009年11月19日木曜日10:29:52 GMT

はい、これらのデモではリクエストで「localhost」を使用しています。ただし、さまざまなネットワーク上のさまざまなマシンから実際のドメイン名を使用しても同じ結果が得られます。

次に2つの質問:

  1. これは、余分なヘッダーが原因でIISが圧縮を適用していない可能性がありますか?もしそうなら、私はそれについて何ができますか?

  2. プロキシがコンテンツを返す前に解凍しているかどうかを確認するにはどうすればよいですか?

ボーナス質問3-この問題をさらに調査するために何ができますか?

私は質問332049を知っていますが、それは要求ではなく応答にヘッダーがあります。

4

1 に答える 1

4

これを自分で調べているときに、あなたの質問に出くわしました。私は MSDNの記事を発見しました。短い答えは、Via ヘッダーはプロキシに使用され、プロキシは通常、圧縮を台無しにするというものです。ヘッダーを削除するか、IIS メタベースの設定を変更できます (HcNoCompressionForProxies="FALSE")。私は両方のオプションで成功しました。

于 2010-01-20T21:56:37.033 に答える