このトピックでは、EdgeRoutine (ER) でサポートされているFetch APIに関するよくある質問に対する回答を提供します。
Fetchは解凍をサポートしていますか?
デフォルトでは、Fetchの自動解凍が有効になっています。 Fetchは、次の解凍方法をサポートしています。
decompress: デフォルトの方法です。 このメソッドは、レスポンス内のコンテンツエンコードヘッダーを読み取り、Identityを除く右端の値で指定された解凍アルゴリズムを使用します。 たとえば、
content-encoding: gzip, identity
では、gzipは解凍アルゴリズムです。 この値をレスポンスヘッダーから削除すると、次のようなシナリオが発生します。content-encoding: identity、gzip
はフェッチされたレスポンスヘッダーです。content-encoding: identity
は、gzipが削除された後のレスポンスヘッダーです。content-encoding: gzip
は、取得したレスポンスヘッダーです。content-encoding
は、gzipが削除された後のレスポンスヘッダーです。
説明解凍アルゴリズムがレスポンスヘッダーから削除されると、データが表示されます。 オリジンサーバーがGzipを使用してデータを圧縮せずにデータを返す場合も、同じシナリオが発生します。 ERがアルゴリズムを認識できない場合、ERは例外をスローします。 ERはGzipのみをサポートしています。 Brotliは、後のバージョンでサポートされる場合があります。
fallbackIdentity: 解凍メソッドに似ています。 データの解凍に失敗した場合、ERは例外をスローしません。 代わりに、ERはアルゴリズム値をアイデンティティとして扱う。 この場合、フェッチされたデータが解凍されるため、例外はスローされません。 解凍せずにデータを読み取ることはできません。
manual: データを解凍しません。
次の方法を使用して、Fetchの解凍ポリシーを手動で設定できます。
fetch(url, {decompress: "manual"})
fetch(url, {解凍: "fallbackIdentity"})
Fetchでサポートされているサブリクエストの最大数は?
Fetchでサポートされるサブリクエストの最大数は32です。 これは、ポイント・オブ・プレゼンス (POP) でキャプチャされたすべての要求のコンテキストに等しいすべてのコンテキストを含む。 3xxリダイレクトまたはCache API呼び出しのサブリクエストの最大数も32です。 クォータの増加をリクエストするには、チケットを起票
ERは無効なURLを認識できますか?
ERは無効なURLを認識できません。 URLに無効な文字が含まれている場合、ERはデータが誤ってエンコードされていることを示します。 URLが有効であることを確認してください。
接続プールでサポートされる接続の最大数はいくつですか。
ERは、すべての接続がTCPまたはSSLハンドシェイクによって消費される場合にFetchの接続プールを提供します。 デフォルトでは、接続プールは最大128の接続をサポートします。 接続数が128に達すると、接続プールは接続のキャッシュを停止します。 追加の接続を作成する場合は、クォータの増加をリクエストできます。
接続プールは、リクエストごとではなく、ユーザーごとに作成されます。 接続プールに接続が確立されていない場合、ERは接続の作成を試みます。 ERは、レスポンスボディ全体が取得された後にのみ接続をキャッシュします。
次のコードは、レスポンス本文全体がフェッチされた後に取得されることを保証します。
非同期関数fetchAndIgnore(url、options) {
let response = await fetch(url、オプション);
// このメソッドは、ERに応答本文を無視させ、応答本文全体が取得されるようにします。
応答を待ちます。ignore();
}