1. キャッシュ

パブリック リンクのキャッシュ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

次の記事では、Sitecore Content Hub™ のパブリック リンクでキャッシュ システムがどのように機能するかを説明しています。

コンピューターの機能では、キャッシュはデータのサブセットを格納する高速データ ストレージ階層であり、通常は一時的なものであるため、そのデータに対する以降のリクエストは、データのプライマリ ストレージの場所にアクセスするよりも高速に処理されます。

キャッシュは、ファイルのコピーを一時的な保存場所に格納するプロセスで、そのため、ファイルにすばやくアクセスできるようになります。これにより、以前に取得または計算されたデータを効率的に再利用できます。

詳細は次を参照してください。

注意

キャッシュされたファイルは 19 日後に削除されます。

レスポンス ヘッダー

Sitecore Content Hub でパブリック リンクをリクエストすると、返されたレスポンスには次のヘッダーが含まれます。

ヘッダー説明
accept-rangesサーバーが部分的なリクエストのサポートをアドバタイズするために使用するマーカー。このフィールドの値は、範囲を定義するために使用できる単位を示します。
cache-controlこれは、リクエストとレスポンスの両方でキャッシュするためのディレクティブまたは命令を保持します。リクエスト内の特定のディレクティブは、同じディレクティブがレスポンス内にある必要があることを意味するものではありません。
content-dispositionコンテンツがブラウザーでインライン表示されることが予期されているかどうかを示すヘッダー。つまり、コンテンツが Web ページ、Web ページの一部、またはダウンロードしてローカルに保存される添付ファイルとして表示される場合のヘッダーです。
content-lengthこれは、受信者に送信されるエンティティ本体のサイズをバイト単位で示します。
content-typeこれは、リソースのメディア タイプを示すために使用します。レスポンスでは、Content-Type ヘッダーは返されたコンテンツのタイプをユーザーに通知します。
dateこれには、メッセージが発信された日時が含まれます。
etagこれは、リソースの特定のバージョンの識別子です。コンテンツが変更されていない場合、Web サーバーは完全なレスポンスを再送信する必要がないため、キャッシュをより効率的にし、帯域幅を節約できます。
last-modifiedこれには、リソースが最後に変更されたとオリジン サーバーが確実にみなしている日時が含まれます。受信または保存されたリソースが同じであるかどうかを判断するためのバリデーターとして使用されます。etag ヘッダーより正確ではありませんが、フォールバック メカニズムとして使用されます。
x-frame-optionsこれは、ブラウザーが<frame><iframe><embed> または <object> タグで、ページのレンダリングを許可する必要があるかどうかを示すために使用できます。

次の画像は、パブリック リンクに対して返されるヘッダーの例を示しています:

パブリック リンク キャッシュのコンテキストでは、ETag ヘッダーおよびキャッシュ コントロール ヘッダーが関連しています。

ETag

ETag つまりエンティティ タグは、HTTP がキャッシュ検証のために提供する数種のメカニズムの 1 つで、ユーザーが条件付きリクエストを作成できるようにします。

コンテンツが変更されていない場合、Web サーバーは完全なレスポンスを再送信する必要がないため、ETag はキャッシュをより効率的にし、帯域幅を節約できます。

ETag は、Web サーバーによって URL で見つかったリソースの特定のバージョンに割り当てられた内部識別子です。その URL のリソース表現が変更されると、新しい異なる ETag が割り当てられます。

ブラウザーは、リソースのヘッダーで ETag を受信すると、それを保存し、次にリソースがリクエストされたときに、ETag をIf-None-Match ヘッダーに入れて返信します。If-None-Match ヘッダーを使用して、リクエストを条件付きにすることができます。クライアントはサーバーにエンティティ タグのリストを提供し、サーバーはそれらのタグをリソースに対して持っているエンティティ タグと比較し、一致するものがない場合にのみリソースを返します。

構文は次のとおりです:

If-None-Match: "<etag_value>"

ETag 値は、二重引用符で囲まれた ASCII 文字の文字列です (例: "0x8D8BC7C6A3BCDCF")。

サーバーはクライアントの ETag (If-None-Match を使用して送信された) を現在のバージョンのリソースに対する ETag と比較し、両方の値が一致する場合 (つまり、リソースが変更されていない場合)、サーバーは 304 Not Modified response を返信します。これは、キャッシュしたバージョンのレスポンスがまだ使用可能 (フレッシュ) であることをクライアントに通知します。

ETag ヘッダーの詳細については、「ETag」を参照してください。

キャッシュ コントロール

パブリック リンクでは次の値を含む cache-control ヘッダーが常に返されます。

cache-control: public, must-revalidate, max-age=86400
説明
publicレスポンスをContent Delivery Network (CDN)、ブラウザー、またはその他のプロキシでキャッシュできることを指定します。
must-revalidateリソースが古くなると、オリジン サーバーでの検証が成功しない限り、キャッシュは古くなったコピーを使用してはならないことを示します。
max-age=<seconds>リソースのキャッシュしたコピーの有効期限が切れるまでにかかる時間を秒単位で定義します。有効期限が切れた後、ブラウザーはサーバーに別のリクエストを送信して、リソースのバージョンを更新する必要があります。
警告

4.0.11 以降のリリースでは、パブリック リンク用の既定の max-age が 1 日から 10 分 (86400 秒から 600 秒) に短縮されています。 この変更は、パブリック リンクにアクセスすると、パブリック リンクまたはその基盤となるアセットに加えられた変更 (たとえば、消去アップデート操作) がより速く反映されることを意味します。

フローの例

設定された CDN (Content Delivery Network) でパブリック リンクをリクエストしたときに発生するフローの例は次のとおりです。

  1. パブリック リンクを最初にリクエストすると、ブラウザーと CDN に 1 日間キャッシュされます。

  2. パブリック リンクを同じ日にもう一度リクエストすると、ファイルはブラウザーのキャッシュから取得されます。

  3. 他のユーザーが同じパブリック リンクを同じ日にリクエストすると、そのユーザーはそれをキャッシュした CDN からのパブリック リンクを受信し、Sitecore Content Hub サーバーは呼び出されません。

  4. 同じパブリック リンクを元のリクエストの 1 日後にもう一度リクエストすると、ブラウザーのキャッシュが期限切れになるため、ブラウザーは CDN と通信します。ただし、CDN のキャッシュも期限切れになっているため、CDN は If-None-Match ヘッダーに ETag 値を含むリクエストを、Sitecore Content Hub サーバーに送信します。

    ETag がまだ有効な場合、サーバーは 304 Not Modified のレスポンス コードを返します。Not Modified レスポンスは、キャッシュしたリソースがまだ有効であり、別の日に使用できることを示します。

    ETag が無効になると、サーバーは新しいリソースを送信してもう一度キャッシュします。

この記事を改善するための提案がある場合は、 お知らせください!