パラメーターの無視を有効にすると、CDN のエッジノードはリクエスト URL からクエリパラメーター (「?」 以降の部分) を削除します。これにより、異なるパラメーターを持つリクエストが同じキャッシュにヒットするようになり、キャッシュヒット率が向上します。このトピックでは、パラメーターの無視の設定方法、代替機能との比較、および一般的な問題のトラブルシューティングについて説明します。
機能の比較と選択
カスタムキャッシュキーは、パラメーター無視と競合します。 パラメーター無視が有効になっている場合、エッジノードは URL 内の
?以降のすべてのパラメーターを削除するため、カスタムキャッシュキー設定のリクエストパラメーター設定は無効になります。 カスタムキャッシュキーを使用する前に、パラメーター無視を無効にしてください。カスタムキャッシュキーは、キャッシュキー設定においてパラメーターの無視の代わりに使用でき、より包括的な機能を提供します。まずカスタムキャッシュキーを使用することを推奨します。設定の比較は以下の通りです。
シナリオ
パラメーターの無視の設定
カスタムキャッシュキーの設定
すべてのリクエストパラメーターを無視する
[パラメーターの無視] を [はい] に設定し、[指定されたパラメーターの保持] を空欄のままにします。
リクエストパラメーターの処理ルールを追加します。
アクション:保持
パラメーター名:存在しないパラメーター名 (例: example-argument) を指定します。
リクエストパラメーター「key1」のみを保持する
「パラメーターを無視」を「はい」に設定し、「指定したパラメーターを保持」を
key1に設定します。リクエストパラメーターの処理ルールを追加します。
アクション:保持
パラメーター名:key1
リクエストパラメーター「key1」のみを削除する
key1のパラメーター設定を削除します。リクエストパラメーターの処理ルールを追加します。
アクション:削除
パラメーター名:key1
オリジンパラメーターの書き換えは、オリジンリクエストの書き換えにおいてパラメーターの無視の代わりに使用でき、より包括的な機能を提供します。まずこの機能を使用することを推奨します。
機能の概要
パラメーターの無視
機能 | シナリオ |
リクエスト URL からクエリパラメーター ( | URL パラメーターがリソースのコンテンツと無関係な場合 (ユーザー UID、参照元、プロモーションコードなど) は、パラメーターの無視を有効にします。たとえば、以下の 2 つのリクエストは同じリソースにアクセスしますが、異なる UID を持っています。 ユーザー A: ユーザー B: パラメーターを無視する設定がない場合、CDN エッジノードはこれらを異なるリソースとして扱うため、同じキャッシュを共有できず、リクエストごとにオリジンへのフェッチが必要になります。パラメーター無視を有効にした場合、CDN エッジノードはパラメーターを削除し、キャッシュを照合するために |
URL 署名はパラメーターの無視よりも優先されます。タイプ A の署名には URL パラメーターが署名に含まれます。CDN は最初に認証を行い、検証が成功した後にのみコンテンツをキャッシュします。
オリジンパラメーターの保持
機能 | シナリオ |
オリジンフェッチ中に元の URL パラメーターをすべて保持することで、オリジンサーバーが重要なユーザー情報を確実に受信できるようにします。 | パラメーター無視が有効になっている場合、CDN エッジノードはデフォルトで、パラメーターが削除された URL をオリジンリクエストに使用します。上記の例では、ユーザー A とユーザー B の両方が |
手順
CDN コンソールにログインします。
左側メニューで、ドメイン名 をクリックします。
ドメインリストで、対象のドメイン名をクリックします。左側メニューで、パフォーマンスの最適化 をクリックして、パフォーマンス最適化設定ページに移動します。
[パラメーターの無視] セクションで 変更 をクリックします。モードを選択し、必要に応じて設定を完了します。
設定が完了したら、OK をクリックして保存します。
モード:指定されたパラメーターの保持
パラメーター | 説明 | 例 |
[パラメーターを無視] |
| 元の URL が
|
[指定されたパラメーターを保持] | 保持するパラメーター名を入力します。最大 10 個のパラメーターをカンマ (,) で区切って指定できます。 | |
[オリジンパラメーターの保持] |
| |
[ルール条件] | ルール条件により、リクエストが特定の基準を満たす場合にのみルールを適用できます。 重要
機能がルール条件を参照する場合、実行順序は機能設定の順序ではなく、関連するルール条件の優先順位に従います。
|
モード:指定されたパラメーターの削除
パラメーター | 説明 | 例 |
[指定されたパラメーターの削除] | 削除するパラメーター名を入力します。最大 10 個のパラメーターをカンマ (,) で区切って指定できます。 | 元の URL を
|
[オリジンパラメーターの保持] |
| |
[ルール条件] | ルール条件により、リクエストが特定の基準を満たす場合にのみルールを適用できます。 重要
機能がルール条件を参照する場合、実行順序は機能設定の順序ではなく、関連するルール条件の優先順位に従います。
|
よくある質問
パラメーターの無視を有効にした後のサービス上の問題に関するトラブルシューティング
パラメーターの無視を有効にすると、CDN は異なるパラメーターを持つリクエストをキャッシュする際に同じリソースとして扱います。URL パラメーターが以下のカテゴリーに該当する場合は、一律に無視しないでください。
ユーザー ID 識別子 (UID、Token、Session ID など):これらを無視すると、認証の失敗やユーザー間のデータ漏洩が発生します。
動的コンテンツの識別(バージョン番号
?v=1やページネーション?page=2など):これらを無視すると、誤ったキャッシュコンテンツが返されます。オリジンでの処理指示 (OSS 画像処理パラメーター
x-oss-processなど): これらを無視すると、処理が無効になり、未処理のオリジナルリソースが返されます。
トラブルシューティングと解決策:
[パラメーターの無視] の設定を削除または無効にします。
設定を変更した後、キャッシュのパージ (URL の更新またはディレクトリの更新) を実行して、エッジノードから古いキャッシュをクリアします。
一部のパラメーターを保持する必要がある場合は、[指定されたパラメーターを保持] モードを使用して、
x-oss-processやtokenなどの重要なパラメーターを保持します。
パラメーターの無視の設定が変更後に有効にならないのはなぜですか
パラメーターの無視の設定を変更した後、エッジノード上のキャッシュファイルは自動的に更新されません。アクセスに問題が続く場合や、オリジントラフィックが減少しない場合は、以下の手順に従ってください。
設定が保存されていることを確認:CDN コンソールにログインし、パラメーターの無視の設定ページを再訪して、現在の設定が期待通りであることを確認します。
カスタムキャッシュキーとの競合を確認:パラメーターの無視とカスタムキャッシュキーは共存できません。パラメーターの無視を有効にすると、カスタムキャッシュキーのリクエストパラメーター設定が無効になります。両方の機能が同時に有効になっていないことを確認してください。
キャッシュのパージを実行:新しい設定はすぐに有効になりますが、既存のキャッシュファイルは古いポリシーに基づいてキャッシュされています。[リソースの更新とプリフェッチ] ページで URL の更新またはディレクトリの更新を実行して、古いキャッシュをクリアし、新しい設定を完全に適用する必要があります。
設定の確認: コマンド
curl -I "full URL"を使用して、レスポンスヘッダーのX-Cacheフィールドを確認し、キャッシュヒットステータスが期待どおりであることを確認します。
OSS の画像処理または動画スナップショットを使用する場合のパラメーターの無視の設定方法
OSS の画像処理 (例: x-oss-process=image/resize,w_200) や動画スナップショット機能を使用する場合、CDN ドメインでパラメーターの無視を有効にすると、元のリソースと処理後のリソースの URL が同じファイルとしてキャッシュされ、誤ったコンテンツ配信につながります。
解決策:CDN コンソールのパラメーター無視設定で、x-oss-process パラメーターを「指定されたパラメーターを保持」モードに設定します。これにより、画像処理パラメーター付きの URL が個別にキャッシュされ、元のリソースのキャッシュとの競合が回避されます。
URL パラメーターによるキャッシュバイパスへの対処方法
攻撃者やクローラーが、同じリソースをリクエストする際に ?timestamp=xxx や ?random=xxx のような意味のないランダムなパラメーターを追加すると、CDN はパラメーター付きの各リクエストをそれぞれ一意のリソースとして扱います。これによりキャッシュヒット率が低下し、オリジンへのトラフィックが急増します。
パラメーターの無視を有効にする (またはすべてのパラメーターを無視するように設定する) ことで、異なるランダムパラメーターを持つリクエストが同じキャッシュにヒットするようになり、オリジンの負荷を効果的に軽減します。たとえば、パラメーターの無視を有効にすると、以下のリクエストは同じキャッシュにヒットします。
http://example.com/page.html?t=123456http://example.com/page.html?t=789012http://example.com/page.html?random=abc
パラメーター無視を有効にすると、これらのリクエストはすべてキャッシュとの照合に http://example.com/page.html を使用するため、URL パラメーターによるキャッシュバイパス攻撃を効果的に軽減できます。
パラメーターの無視を有効にした後、クライアントごとにキャッシュヒットのステータス (X-Cache が MISS を表示) が異なるのはなぜですか
考えられる原因:
URL の動的認証パラメーターが無視されない: URL に
auth_keyのようにリクエストごとに値が異なるパラメーターが含まれている場合、パラメーターを無視する設定が有効であっても、CDN はそれらを異なるリソースとして扱います (認証パラメーターが保持されない場合)。キャッシュのないノードへの初回アクセス:特定のエッジノードにまだリソースがキャッシュされていないため、初回アクセスは常に MISS と表示されます。
クライアントリクエストヘッダーの差異:
Accept-EncodingやUser-Agentなどのヘッダーに違いがあると、複数のキャッシュレプリカが作成される場合があります (たとえば、個別の Gzip バージョンと非 Gzip バージョン) 。カスタムキャッシュキーと競合し、設定が有効になっていない。
トラブルシューティング方法: クライアントで curl -I "full URL" を実行し、X-Cache と X-Swift-CacheTime レスポンスヘッダーを比較してキャッシュステータスを確認します。
解決策:パラメーターの無視が正しく設定されていること (有効になっており、重要なパラメーターが保持されるように設定されていること) を確認し、クライアントのリクエストヘッダーポリシーを統一します。
段階的なリリースやバージョン更新中に、URL パラメーターを使用して CDN に最新のリソースを取得させる方法
パラメーターの無視が有効になっている場合、CDN は ?v=1 や ?v=2 などの URL パラメーターを使用してバージョンを区別できません。以下のいずれかの方法を使用します。
方法 1 (推奨): クエリパラメーターのみに頼るのではなく、バージョン付きファイル名 (
style.v2.cssやapp.v2.jsなど) を使用して、ユーザーが最新のコンテンツを確実に取得できるようにします。アプローチ 2:新しいバージョンをリリースする際に、CDN の更新 API をプロアクティブに呼び出して、古いキャッシュをパージします。