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