Dispatcher を使用してキャッシュを実装する理由

Web パブリッシングには、次の 2 つの基本的な方法があります。

  • 静的 Web サーバー:Apache や IIS などはシンプルですが、高速です。
  • コンテンツ管理サーバー:動的で、リアルタイムの、インテリジェントなコンテンツですが、より多くの計算時間とその他のリソースを必要とします。

Dispatcher によって、高速かつ動的な環境を実現できます。Apache のような静的 HTML サーバーの一部として機能し、次の目的を達成します。

  • できるだけ多くのサイトコンテンツを、静的 Web サイトの形式で格納(キャッシュ)します。
  • レイアウトエンジンへのアクセスをできるだけ少なくします。

つまり、次のようになります。

  • 静的コンテンツ ​は、静的 web サーバーと同じ速度で簡単に処理できます。また、静的 web サーバーで使用できる管理ツールとセキュリティツールを使用できます。

  • 必要に応じて​ 動的コンテンツ ​を生成できます。このとき、システムの動作が必要以上に遅くなることはありません。

Dispatcher には、動的サイトのコンテンツに基づいて静的 HTML を生成し、更新するメカニズムが含まれています。静的ファイルとして保存するドキュメントと、常に動的に生成されるドキュメントを詳細に指定できます。

この節では、このプロセスの原則について説明します。

静的 web サーバー

Apache や IIS などの静的 web サーバーは、web サイトの訪問者に静的 HTML ファイルを提供します。静的ページは 1 回だけ作成されるので、リクエストごとに同じコンテンツが配信されます。

このプロセスは簡単で効率的です。訪問者が HTML ページなどのファイルをリクエストすると、ファイルはメモリから直接取得され、最悪の場合でもローカルドライブから読み取られます。静的 web サーバーはかなり前から利用されてきました。そのため、管理とセキュリティ管理のための様々なツールが用意されています。これらのツールは、ネットワークインフラストラクチャとよく統合されています。

コンテンツ管理サーバー

AEM などの CMS(コンテンツ管理サーバー)を使用する場合、訪問者からのリクエストは高度なレイアウトエンジンによって処理されます。このエンジンは、リポジトリからコンテンツを読み取り、スタイル、フォーマットおよびアクセス権を組み合わせて、コンテンツを訪問者のニーズや権限に合わせたドキュメントに変換します。

このワークフローによって、豊富で動的なコンテンツを作成でき、web サイトの柔軟性と機能性を高めることができます。ただし、レイアウトエンジンは静的サーバーより多くの処理能力が必要なので、レイアウトエンジンを設定すると、多くの訪問者がシステムを使用した場合に動作が遅くなる可能性があります。

Dispatcher によるキャッシュの実行方法

キャッシュディレクトリ:キャッシュ時、Dispatcher モジュールでは web サーバーの静的コンテンツ提供機能を使用します。キャッシュされたドキュメントは、Dispatcher によって web サーバーのルートに配置されます。

メモ
HTTP ヘッダーキャッシュの設定がない場合、Dispatcher は、ページの HTML コードのみを保存します。この場合、HTTP ヘッダーは保存されません。Web サイト内で異なるエンコーディングを使用していると、これらのページが失われる可能性があるので、このシナリオは問題になる可能性があります。HTTP ヘッダーキャッシュを有効にするには、Dispatcher キャッシュの設定を参照してください。
メモ
Web サーバーのドキュメントルートをネットワーク接続ストレージ(NAS)上に配置すると、パフォーマンスが低下します。また、NAS 上のドキュメントルートを複数の web サーバーで共有すると、レプリケーションアクションの実行時に断続的なロックが発生することがあります。
メモ
Dispatcher は、キャッシュされたドキュメントを、リクエストされた URL と等しい構造に保存します。
ファイル名の長さには OS レベルでの制限がある場合があります。つまり、多数のセレクターを含む URL がある場合です。

キャッシュの方法

Web サイトに変更があったとき、Dispatcher では主に 2 つの方法でキャッシュコンテンツを更新します。

  • コンテンツの更新 ​によって、変更されたページや、そのページに直接関連付けられたファイルを削除します。
  • 自動無効化 ​によって、キャッシュで変更があった部分を自動的に無効化し、更新後に期限切れとします。つまり、関連するページに期限切れのフラグを付けるだけで、削除は行いません。

コンテンツの更新

コンテンツの更新時に、1 つ以上の AEM ドキュメントが変更されます。AEM から Dispatcher にシンジケーションのリクエストが送信され、このリクエストに応じて次のようにキャッシュの更新が行われます。

  1. 変更されたファイルを、キャッシュから削除します。
  2. 同じハンドルで始まるすべてのファイルを、キャッシュから削除します。例えば、ファイル /en/index.html が更新された場合、/en/index. で始まるすべてのファイルは削除されます。このメカニズムによって、特に画像ナビゲーションの場合に、キャッシュを効率的に使用するサイトをデザインできます。
  3. statfile と呼ばれるファイルに​ アクセス ​します。アクセスすると、statfile のタイムスタンプが最終変更日に更新されます。

次の点に注意してください。

  • コンテンツの更新は、通常、置き換える必要のあるコンテンツを「把握している」オーサリングシステムと組み合わせて使用します。
  • ファイルに影響を与えるコンテンツ更新は削除されますが、すぐに置き換えられるわけではありません。次回このようなファイルがリクエストされると、Dispatcher は AEM インスタンスから新しいファイルを取得し、キャッシュに配置し、古いコンテンツを上書きします。
  • 通常、ページのテキストを取り込んで自動生成された画像は、同じハンドルで始まる画像ファイルに格納されます。したがって、ページと画像ファイルは関連があり、削除の対象となります。例えば、mypage.html というページのタイトルテキストを、mypage.titlePicture.gif ファイルとして同じフォルダーに格納できます。したがって、ページの更新ごとにキャッシュにある画像が自動的に削除されるので、画像のバージョンを常にページの現在のバージョンと合わせることができます。
  • statfile は複数持つことができます。例えば、言語フォルダーごとに 1 つずつ持つことができます。ページが更新されると、AEM は statfile を含む次の親フォルダーを探し、そのファイルに touch します。