Alibaba Cloud DCDN POP (Point of Presence) がオリジンサーバーからリソースをフェッチすると、オリジンサーバーはレスポンスステータスコードを返します。DCDN でこれらのステータスコードのキャッシュ期間を設定できます。クライアントが同じリソースを再度リクエストすると、DCDN POP はオリジンフェッチを実行せずにステータスコードを直接返します。これにより、オリジンサーバーの負荷が軽減されます。ステータスコードのキャッシュ期間が終了すると、新しいオリジンフェッチがトリガーされます。
シナリオ
ステータスコードのキャッシュ有効期限の設定は、主にオリジンサーバーが異常なステータスコードを返したときに DCDN ノードが実行するキャッシュ操作を指定するために使用されます。
デフォルトでは、DCDN ノードがオリジンサーバーからリソースを正常に取得し、HTTP 2xx ステータスコードを受信すると、レスポンスは Alibaba Cloud CDN および DCDN のデフォルトのキャッシュルールと優先度 に基づいて処理されます。ただし、オリジンサーバーが頻繁に 2xx 以外のステータスコードを返し、すべてのリクエストをオリジンに転送するのを避けたい場合は、これらの HTTP ステータスコードに TTL (Time-To-Live) を設定できます。DCDN ノードは、キャッシュされたステータスコードをクライアントに直接返すことができます。これにより、オリジンサーバーの負荷が軽減されます。
典型的なシナリオ
ファイル A という名前のファイルがオリジンサーバーから削除されても、クライアントはそれをリクエストし続けます。DCDN ノードにはファイル A がキャッシュされていないため、すべてのリクエストはオリジンサーバーに転送され、4xx ステータスコードが返されます。これにより、オリジンサーバーの負荷が増加します。DCDN が 4xx ステータスコードをキャッシュするように設定すると、DCDN ノードは最初のオリジンフェッチ後に 4xx ステータスコードをキャッシュします。設定されたキャッシュ期間内にクライアントがファイル A を再度リクエストすると、DCDN はキャッシュされた 4xx ステータスコードを直接返します。
異常なステータスコードのキャッシュルール
ステータスコード 204、305、404、405、414、424、429、500、501、502、503、および 504 の場合、キャッシュルールは次のとおりです:
オリジンサーバーが
set-cookieレスポンスヘッダーを返す場合、DCDN はレスポンスをキャッシュしません。オリジンサーバーが Set-Cookie レスポンスヘッダーを返さない場合、レスポンスは DCDN コンソールで設定したステータスコードの有効期限に基づいてキャッシュされます。複数のルールがどのように有効になるかについては、「複数のルールの優先度」セクションをご参照ください。
オリジンサーバーが Set-Cookie レスポンスヘッダーを返さず、DCDN コンソールでステータスコードの有効期限を設定していない場合、レスポンスはオリジンサーバーからの Pragma、Cache-Control、または Expires レスポンスヘッダーに基づいてキャッシュされます。
オリジンサーバーが Set-Cookie、Pragma、Cache-Control、または Expires レスポンスヘッダーを返さず、DCDN コンソールでステータスコードの有効期限を設定していない場合、レスポンスはデフォルトで 1 秒間キャッシュされます。
ステータスコード 302、307、および 403 の場合、キャッシュルールは次のとおりです:
オリジンサーバーが
set-cookieレスポンスヘッダーを返す場合、DCDN はレスポンスをキャッシュしません。オリジンサーバーが Set-Cookie レスポンスヘッダーを返さない場合、レスポンスは DCDN コンソールで設定したステータスコードの有効期限に基づいてキャッシュされます。複数のルールがどのように有効になるかについては、「複数のルールの優先度」セクションをご参照ください。
オリジンサーバーが Set-Cookie レスポンスヘッダーを返さず、DCDN コンソールでステータスコードの有効期限を設定していない場合、レスポンスはオリジンサーバーからの Pragma、Cache-Control、または Expires レスポンスヘッダーに基づいてキャッシュされます。
オリジンサーバーが Set-Cookie、Pragma、Cache-Control、または Expires レスポンスヘッダーを返さず、DCDN コンソールでステータスコードの有効期限を設定していない場合、レスポンスはキャッシュされません。
304 ステータスコードの場合、DCDN はレスポンスをキャッシュしません。このステータスコードにキャッシュ期間を設定することはできません。
400 などの他の異常なステータスコードの場合、キャッシュルールは次のとおりです:
オリジンサーバーが
set-cookieレスポンスヘッダーを返す場合、DCDN はレスポンスをキャッシュしません。オリジンサーバーが Set-Cookie レスポンスヘッダーを返さない場合、レスポンスは DCDN コンソールで設定したステータスコードの有効期限に基づいてキャッシュされます。複数のルールがどのように有効になるかについては、「複数のルールの優先度」セクションをご参照ください。
その他のシナリオでは、レスポンスはキャッシュされません。
Range オリジンフェッチを使用するリクエストの場合、DCDN POP がオリジンサーバーから 206 以外のステータスコードを受信すると、DCDN POP はキャッシュされたファイルシャードを削除します。オリジンフェッチのタイムアウトでは、キャッシュされたファイルシャードは削除されません。
Range オリジンフェッチのシナリオでは、オリジンサーバーは大きなファイルを複数の小さなファイルシャードに分割し、DCDN POP に返します。たとえば、ファイルが 10 個のシャードに分割されているとします。DCDN POP はすでに 5 つのシャードをキャッシュしています。POP が 6 番目のシャードをリクエストしたときに、オリジンサーバーが 5xx ステータスコードを返した場合、以前にキャッシュされた 5 つのシャードは削除されます。
複数のルールがどのように有効になるか
ステータスコードに対して複数のキャッシュルールを設定できます。リクエストが複数のルールに一致する場合、1 つのルールのみが有効になります。有効なルールは次のように決定されます:
評価順序:
ルールはまずタイプ (ファイル拡張子 > ディレクトリ) で評価され、次に作成時間 (古い > 新しい) で評価されます。
異なるタイプのルールの優先度: ファイル拡張子 > ディレクトリ。
たとえば、ユーザーリクエストが ファイル拡張子 タイプと ディレクトリ タイプの 2 つのルール (両方とも 404 ステータスコード用に設定) に一致する場合、404 ステータスコードの有効期限は ファイル拡張子 ルールによって決定されます。詳細な例については、「設定例」をご参照ください。
同じタイプのルールの優先度: 古い > 新しい (ルールリストの上から下へ)。
たとえば、ユーザーリクエストが同じタイプ (両方とも ファイル拡張子 または両方とも ディレクトリ) の 2 つのルール (両方とも 404 ステータスコード用に設定) に一致する場合、404 ステータスコードの有効期限は最初に作成されたルールによって決定されます。詳細な例については、「設定例」をご参照ください。
手順
DCDN コンソールにログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけ、アクション 列の 設定 をクリックします。
ドメイン名の左側のナビゲーションツリーで、キャッシング をクリックします。
[ステータスコードの有効期限] タブをクリックします。
[追加] をクリックして、ステータスコードのキャッシュ有効期限を設定します。

タイプ
注
タイプ
[ディレクトリ] と [ファイル拡張子] タイプをサポートしています。必要に応じてタイプを選択してください。
説明異なるタイプのルールの優先度: ファイル拡張子 > ディレクトリ。詳細については、「複数のルールがどのように有効になるか」をご参照ください。
アドレス
[ディレクトリ] をタイプとして選択した場合、次の点に注意してください:
一度に追加できるディレクトリは 1 つだけです。
ディレクトリの完全なパスを入力します。パスはスラッシュ (
/) で始まる必要があります (例:/directory/aaa)。
[ファイル名拡張子] をタイプとして選択した場合、説明は次のとおりです:
1 つ以上のファイル拡張子を入力します。複数の拡張子はコンマ (,) で区切ります (例:
jpg,txt)。説明大文字と小文字のみが異なる同じファイル拡張子に対して複数のレコードを設定した場合、後で作成したレコードが以前のレコードを上書きします。たとえば、
jpg,txtのルールを作成し、その後jpg,txtの別のルールを作成すると、以前に作成されたjpg,txtレコードは上書きされます。この場合、小文字の拡張子のルールを設定したい場合は、txtとjpgのルールを個別に作成できます。ファイル拡張子では大文字と小文字が区別されます。アスタリスク (
*) を使用してすべてのファイルタイプに一致させることはできません。
ステータスコードの有効期限設定
キャッシュするステータスコードとそのキャッシュ期間。期間は最大 3 年まで設定できます。単位は秒です。設定ルールは次のとおりです:
複数のステータスコードはコンマ (
,) で区切ります。2xx および 3xx ステータスコードの場合、個別のコードのみを指定できます。ワイルドカードマッチングはサポートされていません。たとえば、201=10 はサポートされていますが、2xx=12 はサポートされていません。
4xx および 5xx ステータスコードの場合、個別のコードとワイルドカードマッチングの両方がサポートされています。たとえば、401=10 と 4xx=12 の両方がサポートされています。
オリジンサーバーのキャッシュポリシーを優先
この機能を有効にすると、オリジンサーバーのレスポンスに
Cache-ControlやPragmaなどのキャッシュポリシーヘッダーが含まれている場合、オリジンサーバーのキャッシュポリシーが優先されます。オリジンサーバーからの No-Cache ヘッダーを無視
この機能を有効にすると、DCDN ノードはオリジンサーバーからの次の no-cache ヘッダーを無視します。
Cache-Control: no-storeCache-Control: no-cacheCache-Control: max-age=0Pragma: no-cache
クライアントは DCDN キャッシュポリシーに従う
この機能を有効にすると、DCDN ノードは最終的に有効なキャッシュポリシーをクライアントに送信します。
コンテンツの再検証を強制
このパラメーターは、キャッシュの有効期限が 0 に設定されている場合にのみ有効になります。効果は次のとおりです:
無効 (デフォルト): DCDN の TTL が 0 に設定されている場合、ファイルは DCDN ノードにキャッシュされず、各リクエストはコンテンツを取得するためにオリジンフェッチを必要とします。
有効: DCDN の TTL (Time-To-Live) が 0 に設定されている場合、ファイルは DCDN ノードにキャッシュできます。各リクエストは、キャッシュされたコンテンツを検証するためにオリジンフェッチを必要とします。
OK をクリックします。
ステータスコードのキャッシュ有効期限ルールを設定すると、そのルールが [ステータスコードの有効期限] リストに表示されます。その後、ルールを 変更 または [削除] できます。
設定例
例 1: ディレクトリタイプのルール
次の図に示すように、ディレクトリタイプのルールを作成します:

/directory/aaaディレクトリの場合、すべての 4xx ステータスコードは 10 秒間キャッシュされ、201 ステータスコードは 15 秒間キャッシュされます。キャッシュ期間中、DCDN ノードは一致するアクセスリクエストに直接応答します。キャッシュの有効期限が切れると、リクエストはオリジンサーバーに転送されます。例 2: ファイル拡張子タイプのルール
次の図に示すように、ファイル拡張子タイプのルールを作成します:

.jpgまたは.txt拡張子を持つファイルの場合、403 ステータスコードは 10 秒間キャッシュされ、404 ステータスコードは 15 秒間キャッシュされます。キャッシュ期間中、DCDN ノードは一致するアクセスリクエストに直接応答します。キャッシュの有効期限が切れると、リクエストはオリジンサーバーに転送されます。例 3: 異なるタイプのルールの優先度
次の図に示すように、異なるステータスコードの有効期限を持つ
ディレクトリタイプのルールとファイル拡張子タイプのルールが作成されます:
ユーザーが
http://example.com/directory/aaa/test.jpgをリクエストします。リソースは DCDN ノードにキャッシュされていません。DCDN ノードはオリジンサーバーにリソースをリクエストし、オリジンサーバーは 404 ステータスコードを返します。このリクエストはディレクトリタイプのルールとファイル拡張子タイプのルールの両方に一致します。ルールタイプの優先度は ファイル拡張子 > ディレクトリ であるため、ファイル拡張子タイプのルールが有効になります。404 ステータスコードの実際のキャッシュ期間は 20 秒です。例 4: 同じタイプの複数のルールの優先度
/directoryパスに対して最初にディレクトリタイプのルール 1が作成されます。次に、/directory/aaaパスに対してディレクトリタイプのルール 2が作成されます。これらは、次の図に示すように、異なるステータスコードの有効期限を持ちます:
ユーザーが
http://example.com/directory/aaa/test.jpgをリクエストします。リソースは DCDN ノードにキャッシュされていません。DCDN ノードはオリジンサーバーにリソースをリクエストし、オリジンサーバーは 404 ステータスコードを返します。このリクエストは両方のディレクトリタイプのルールに一致します。同じタイプのルールの優先度は 古い > 新しい であるため、最初に作成されたルールであるディレクトリタイプのルール 1が有効になります。404 ステータスコードの実際のキャッシュ期間は 15 秒です。