次の方法で共有


HTTP の zstd ベースの共有ディクショナリ圧縮に関する考慮事項

この記事では、zstd ベースの HTTP 用共有ディクショナリ圧縮 (ZSDCH) 機能に関するエンタープライズの考慮事項について説明します。

インフラストラクチャの考慮事項は、Chromium プロジェクトによって実装された 圧縮辞書トランスポート 機能にも主に適用されます。 圧縮辞書トランスポート機能は、Microsoft Edge 119 以降の Origin Trial メカニズムを使用してサイトで使用できます。

ZSDCH とは

ZSDCH は Microsoft Edge の試験的な機能であり、ブラウザーが共有ディクショナリを使用して HTTPS 経由で提供される応答を展開できます。 ユーザーがこの機能を使用してサイト (bing.com など) にアクセスすると、サーバーがページをユーザーに送信するための帯域幅要件が減り、パフォーマンスが向上します。

コンプレッション ディクショナリ トランスポート機能は、同じシナリオを対象としており、同様の方法で動作します。

ZSDCH のしくみ

ZSDCH は、ブラウザーが "Accept-Encoding" 要求ヘッダーで新しい値 "zsdch" を送信して、ブラウザーが ZSDCH 圧縮をサポートしていることをサーバーに示すことで機能します。

サーバーが今後の応答に ZSDCH を使用する場合は、ZSDCH 以外の Content-Encoding を使用する一般的な応答を提供しますが、追加の "get-dictionary" 応答ヘッダーが提供されます。 このヘッダーは、後で使用するために、ブラウザーが ZSDCH ディクショナリをフェッチする場所へのポインターを提供します。

ブラウザーがディクショナリをフェッチしてキャッシュした後、サーバーに対する今後の要求には、使用可能なディクショナリの一覧が "available-dictionary" ヘッダーに含まれます。 サーバーは、使用可能なディクショナリのいずれかを使用して圧縮された応答を提供できる場合は、ディクショナリを使用して応答を提供し、"zsdch" の "Content-Encoding" を指定します。

コンプレッション ディクショナリ トランスポート機能のしくみ

同様に、コンプレッション ディクショナリ トランスポート ディクショナリが要求時間中にクライアントで使用できる場合、コンプレッション ディクショナリ トランスポートは、追加の "Accept-Encoding" 要求ヘッダー値 ("sbr" および /または "zstd-d") を "Sec-Available-Dictionary" 要求ヘッダーと共にアドバタイズします。

これらの機能がテストされているサイトは何ですか?

パフォーマンスの向上とさまざまなネットワーク トポロジとの互換性を検証するために、Edge では、bing.com、bing.cn、msn.com からコンテンツを要求するときに ZSDCH サポートがアドバタイズされます。 Edge では、"localhost" ホスト名を使用してサーバーにアドバタイズすることで、ローカル テストもサポートしています。

圧縮辞書トランスポート機能は、配信元試用版メカニズムを使用して、Microsoft 以外のサイトを含むさまざまなサイトによってテストされています。

ネットワーク ミドルボックスとの潜在的な相互作用

一部の企業では、キャッシュやネットワーク トラフィック検査機能を提供するネットワーク ミドルボックスを使用しています。 これらの製品には、応答を解析できる要件がある場合があります。それ以外の場合は、ページを中断する方法で応答を変更またはブロックする可能性があります。

Content-Encoding が認識できるエンコーディングである必要があるミドルボックスでは、サポートされていないエンコードを削除するために、要求の Accept-Encoding ヘッダー値を確実に変更する必要があります。 それ以外の場合、Web サーバーは、中間ボックスでデコードできない応答を提供することを選択できます。

応答を検査する必要のないキャッシュ レイヤーの場合は、"Vary" ヘッダーを正しくサポートして、"Vary" 値に "avail-dictionary" ヘッダー名や "sec-available-dictionary" ヘッダー名を含むサーバー応答が正しく処理され、適切なディクショナリを持たないクライアントに圧縮された応答が返されないようにする必要があります。

これらのプラクティスは一般的であり、ブラウザーでサポートされる新しい将来のコンテンツ エンコーディングにも適用されます。

プロキシまたはミドルボックスは、プライベートインターセプト証明書を使用して TLS トラフィックを復号化している場合にのみ、TLS 接続の圧縮を妨げる可能性があります。

上記のベスト プラクティスに従わないエンタープライズ環境に対するリスクを最小限に抑えるために、Edge は、このような復号化中のボックスが検出されたときに ZDSCH 機能を無効にします。

圧縮辞書トランスポート機能の場合、明示的なエンタープライズ ポリシー (CompressionDictionaryTransportEnabled) が提供されます。 影響を受ける企業は、このポリシーを使用して機能を無効にし、ベンダーと協力して製品を更新して、新しいなじみのないコンテンツ エンコーディングを適切に処理できます。

ZSDCH が環境内で問題を引き起こしていることを確認する

ZSDCH が環境内で望ましくない問題を引き起こしていると思われる場合は、次の手順を使用して Edge で ZSDCH を無効にすることができます。

  1. edge://flagsを開きます。
  2. "#edge-enable-zsdch-content-encoding" を検索します。
  3. 機能の値を "無効" に設定します。
  4. Edge を再起動して変更を有効にします。
  5. 問題が発生したシナリオを実行して、問題が引き続き発生するか、解決されるかを判断します。