キャッシュ共有により、同一の Alibaba Cloud アカウント配下にある複数の高速化ドメイン名で、CDN のポイントオブプレゼンス (POP) 上のキャッシュされたリソースを共有できます。複数のドメイン名が画像、CSS、JavaScript ファイルなどの多くの共通アセットを提供する場合、キャッシュ共有を設定することで、重複したオリジンフェッチを防ぐことができます。これにより、キャッシュヒット率が向上し、オリジントラフィックが削減されます。
キャッシュ共有の仕組み
キャッシュ共有を設定すると、CDN は rewrite_host 関数を利用して、異なるドメイン名からのリクエストが CDN のポイントオブプレゼンス (POP) レベルで同一のリソースとして扱われるようにします。具体的には、キャッシュ共有が設定された高速化ドメイン名に対し、キャッシュキーのルックアップと生成時にのみ、リクエストの Host がターゲットドメイン名の Host (share_host パラメーター) に置き換えられます。このプロセスは、高速化ドメイン名のオリジン URL やオリジンホストには影響しません。
a.example.com と b.example.com という 2 つのドメイン名が、どちらも同じ Bootstrap フレームワークを使用し、同一の画像、CSS、JS ファイルを参照していると仮定します。キャッシュ共有が設定されているかどうかによって、CDN の動作は異なります。
キャッシュ共有なしの場合
デフォルトでは、各ドメイン名は独立したキャッシュスペースを維持します。2 つのドメイン名が同じオリジンサーバーを指していても、ドメイン名はキャッシュキーの一部であるため、CDN の POP はそれらを異なるリソースとして扱います。
ユーザー 1 が
a.example.com/image.pngにアクセスします。画像はa.example.comのキャッシュスペースにキャッシュされます。ユーザー 2 が
b.example.com/image.pngにアクセスします。画像はすでにa.example.comのキャッシュに存在していても、CDN はオリジンサーバーから再度フェッチし、b.example.comのキャッシュスペースに個別にキャッシュします。
これにより、同一リソースに対して重複したキャッシングと冗長なオリジンフェッチが発生します。
キャッシュ共有ありの場合
ユーザー 1 が
a.example.com/image.pngにアクセスします。画像は共有キャッシュスペースにキャッシュされます。ユーザー 2 が
b.example.com/image.pngにアクセスします。CDN はリソースが同一であると識別し、オリジンフェッチなしで共有キャッシュから直接提供します。
リソースはオリジンサーバーから一度だけフェッチされます。その後のリクエストは、ドメイン名に関係なく、共有キャッシュから直接提供されます。
同一オリジン:共有キャッシュの動作
2 つのドメイン名が同じオリジン URL (たとえば、両方とも origin.example.com を使用) を共有している場合、それらは当然同じオリジンからリソースをフェッチします。キャッシュ共有が設定されていると、両方のドメイン名からのリクエストが同じキャッシュエントリにマッピングされ、事実上単一のキャッシュスペースを共有します。
異なるオリジン:クロスオリジンキャッシュ共有
2 つのドメイン名が異なるオリジン URL を使用している場合でも、キャッシュ共有によってクロスオリジンのキャッシュ再利用が可能になります。たとえば、origin-a.example.com と origin-b.example.com が同一の URL パスでリソースを提供している場合、キャッシュ共有はキャッシュキーの生成時に高速化ドメイン名を共有ドメイン名に置き換えます。
キャッシュ共有を使用する状況
次のような場合にキャッシュ共有を使用します:
同一の Alibaba Cloud アカウント配下に 2 つ以上の高速化ドメイン名がある。
複数のドメイン名が、同一または大部分が重複する静的アセットを提供している。
ドメイン名をまたがるキャッシュミスによる冗長なオリジンフェッチを削減したい。
次のような場合はキャッシュ共有を使用しないでください:
高速化ドメイン名が 1 つしかない。
ドメイン名が、共有アセットのない全く異なるコンテンツを提供している。
コンテンツが主に動的で、CDN のキャッシングに適していない。
前提条件
キャッシュ共有を設定する前に、以下の要件を満たしていることを確認してください:
CDN サービスが有効化された Alibaba Cloud アカウント
同一アカウント配下に、状態が [有効] の高速化ドメイン名が 2 つ以上あること
Resource Access Management (RAM) ユーザーを使用している場合は、CDN コンソールの設定のための Resource Access Management (RAM) ユーザー権限
制限
最大候補数 — 候補リストには最大 500 のドメイン名が表示されます。
リソースグループによる分離 — 現在のドメイン名が特定のリソースグループに属している場合、候補リストはそのリソースグループによってフィルタリングされます。
単一選択 — キャッシュ共有は 1 つのターゲットドメイン名のみをサポートします。複数の共有ターゲットを同時に設定することはできません。
削除保護 — ドメイン名 A のキャッシュ共有ターゲットがドメイン名 B に設定されている場合、システムはドメイン名 B の削除を防止します。ドメイン名 B を削除する前に、まずドメイン名 A のキャッシュ共有設定を削除または変更する必要があります。
注意事項
共有されている高速化ドメイン名を削除すると、そのキャッシュを使用している他のドメインのキャッシュヒット率が低下します。ドメイン名を無効化または削除する際は注意してください。
キャッシュ共有を使用している高速化ドメイン名を別のアカウントに移行しても、移行されたドメインのキャッシュ共有設定は保持されます。ただし、キャッシュ共有は単一のアカウント内でのみ機能するため、ターゲットが元のアカウントに残っている場合は、再設定が必要になることがあります。
キャッシュ共有の設定
CDN コンソール にログインします。
左側のナビゲーションペインで、ドメイン名 をクリックします。
[ドメイン名] ページで、対象のドメイン名を見つけます。
ドメイン名の詳細ページの左側にあるナビゲーションペインで、キャッシュ設定 をクリックします。
共有キャッシュ タブをクリックします。
設定の変更 をクリックします。
表示されたダイアログボックスで、ドロップダウンリストからターゲットの高速化ドメイン名を選択します。
ドロップダウンリストには、現在のアカウント配下で状態が [有効] の高速化ドメイン名のみが表示されます。検索ボックスを使用してあいまい検索を実行できます。最大 500 の候補ドメイン名が表示されます。現在設定中のドメイン名は、リストから自動的に除外されます。
OK をクリックして設定を保存します。
設定が完了すると、設定された共有キャッシュドメイン名が [キャッシュ共有] タブに表示されます。
キャッシュ共有設定の変更
対象ドメイン名の ページ に移動します。
設定の変更 をクリックします。
表示されたダイアログボックスで、新しいターゲットの高速化ドメイン名を選択し、OK をクリックします。
変更が保存されると、新しいターゲットドメイン名が [キャッシュ共有] タブに表示されます。現在のドメイン名からのリクエストは、CDN の POP で新しいターゲットドメイン名のキャッシュスペースを使用するようになります。
キャッシュ共有設定の削除
対象ドメイン名の ページ に移動します。
設定を削除 をクリックします。
確認ダイアログボックスで、OK をクリックします。
削除が完了すると、ページに未設定が表示されます。 ドメイン名は独自のキャッシュ領域の使用を再開します。 以前に共有されていたキャッシュコンテンツは、このドメイン名からアクセスできなくなります。
よくある質問
キャッシュ共有を設定せずに、異なるドメイン名でキャッシュされたコンテンツを共有できますか?
いいえ。CDN のキャッシュキーにはドメイン名が含まれているため、異なるドメイン名へのリクエストは異なるリソースとして扱われます。これは、両方のドメインが同じオリジンサーバーから同じファイルをリクエストした場合にも当てはまります。
設定後もキャッシュヒット率が向上しないのはなぜですか?
これを解決するには、主に 2 つの点を確認する必要があります:
両方のドメイン名が、完全に同一のリソース URL (ファイルパス) を指していることを確認してください。パスが異なると、システムはそれらを別々のファイルとして扱い、キャッシュは期待どおりに機能しません。
キャッシュの有効期限設定 (TTL) を見直してください。それらが妥当な値に設定されていることを確認してください。有効期限が短すぎると、キャッシュは再利用される前に期限切れになり、ヒット率の向上が妨げられます。