CQ では、ディスパッチャーは Adobe のキャッシュおよび負荷を平衡化させるためのツールです。CQ のキャッシュオプションは、dispatcher.any 設定ファイルによって設定されます。キャッシュメカニズムを堅牢にするために、Dispatcher.any ファイルには多数の設定オプションが用意されています。ディスパッチャーの詳細については、CQ ディスパッチャーのドキュメントを参照してください。

この記事では、ディスパッチャーを使用して CQ インスタンスでキャッシュを有効にするときに直面する可能性のある問題について説明します。

ディスパッチャーでのデバッグの有効化

CQ ディスパッチャーを設定するときは、ディスパッチャーの記録メカニズムが正しいことを確認してください。

Apache Web サーバーの場合は、次のラインが http.conf ファイルにあることを確認してください。

<IfModule disp_apache2.c>
DispatcherConfig conf/dispatcher.any
DispatcherLog logs/dispatcher.log

# log level for the dispatc her log
# 0 Errors
# 1 Warnings
# 2 lnfos
# 3 Debug
DispatcherLogLevel 3

# if turned to 1, the dispatcher looks like a normal module
#since build 5210, this setting has no eff ect , since it used to crash
# apache if set to 0.
DispatcherNoServerHeader 1

# if turned to 1, request to I are not handled by the dispatcher
# use the mod_alias t hen for the correct mapping
DispatcherDeclineRoot 0
</IfModule>

DispatcherLog logs/dispatcher.log という行は、ディスパッチャーログファイルの名前を示します。

DispatcherLogLevel 3 という行は、記録するメッセージのレベルを示します。

Web サーバーを再起動するとすぐに、ディスパッチャーの初期化に関する情報を利用して dispatcher.log ファイルが作成されます。

Web サーバーのルートディレクトリに関する名前とログファイルの場所を変更できます。

ディスパッチャーキャッシュを有効にして、CQ Web サイト上の任意のページを参照し、dispatcher.log を開きます。次の行が表示されます。

[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cachefile does not exist or is a directory: \Library\WebServer\cache\index.html
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] try to create new cachefile: \Library\WebServer\cache\index.html
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cache-action for [/index.html]: CREATE

注意:

ログファイルの cache-action ステートメントは、最後のページ呼び出しの結果を識別するために使用できるインジケーターです。

問題点

ディスパッチャーキャッシュにコンテンツが保存されていない問題をデバッグするにはどうすればよいですか?

Web サーバーのページデータは、dispatcher.any の /cache セクションの /docroot 属性で指定された場所にキャッシュされます。特定のページ情報がキャッシュされていないことを確認する場合は、dispatcher.log に移動します。ログの最後には、最後のページ呼び出しのエントリが表示されます。

ログ内に「クエリ文字列によるキャッシュ無効」エラーが見つかりました。

[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] checking [/libs/cq/security/userinfo.json]
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] Caching disabled due to query string: cq_ck=1350373444666
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cache-action for [/libs/cq/security/userinfo.json]: NONE

クエリ文字列(http://www.mysite.com/search?q=adobe など)を含むリクエストはクエリ文字列に依存するダイナミック出力につながります。ほとんどの場合、クエリ文字列リクエストの出力はキャッシュされません。

解決策

一部のクエリパラメータが出力に直接関連しないと特定した場合、リクエストのクエリ文字列パラメーターを無視するようにディスパッチャーを設定します。

ignoreUrlParams セクションで、無視するクエリ文字列パラメーターを指定します。

この例の設定では、「q」クエリ文字列パラメーターを使用した URL リクエストがキャッシュされます。

/ignoreUrlParams
 {
 /0001 { /glob "*" /type "deny" }
 /0002 { /glob "q" /type "allow" }
 }

上記の設定では、ディスパッチャーは次のリクエストを同じものとして扱います。

http://www.mysite.com/search?q=adobe
http://www.mysite.com/search?q=dispatcher
http://www.mysite.com/search

「認証ヘッダーによりキャッシュがありません」というエラーがログに見つかりました。

[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] checking [/content/geometrixx-outdoors/en/unlimited-blog.html]
[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] no cache due to authorization header.
[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] cache-action for [/content/geometrixx-outdoors/en/unlimited-blog.html]: NONE

解決策

この問題の解決方法については次のフォーラムディスカッションを参照してください。キャッシュではなく、ディスパッチャーサービング、CQ5 ページ

更新されずにキャッシュファイルをデバッグするにはどうしたらよいですか?

CQ キャッシュメカニズムでは、キャッシュを無効にするために空のファイル(dispatcher.log の /statfile 属性で指定)のタイムスタンプが更新されます。したがって、ページがレプリケートされるとき、ディスパッチャーフラッシュエージェントは Web サーバーにリクエストを送信します。ディスパッチャーは要求を認識し .stat ファイルを開きます。次に、タイムスタンプを更新するためにファイル内の 1 バイトを変換します。この変更によりキャッシュが無効になり、ディスキャッチャーがキャッシュをフラッシュします。

解決策

何も作動していない場合どうすればデバッグできますか?

Web サイトが空白ページのみを表示するとき、シナリオが発生することがあります。

エラー「フィルター拒否」がログ内に見つかりました。

[Tue Oct 16 13:47:18 2012] [D] [2880(1332)] cache-action for [/libs/wcm/core/content/siteadmin.infinity.json]: NONE
[Tue Oct 16 13:47:18 2012] [D] [2880(1532)] connected to render publish1 (127.0.0.1:4502)
[Tue Oct 16 13:47:18 2012] [D] [2880(1332)] Filter rejects GET /libs/wcm/core/content/siteadmin.infinity.json HTTP/1.1

解決策

dispatcher.any のフィルターセクションは、ディスパッチャーが処理する要求を定義します。

/type がページで「許可」に設定されていることを確認し、Web サイトのコンテンツが表示されるようにします。

上記の例では、「siteadmin.infinity.json」のエラーがスローされます。

dispatcher.any の /filters セクションから次の行では、タイプは「拒否」に設定されます。

      # Deny content grabbing
      /0081 { /type "deny"  /glob "GET *.infinity.json*" }
      /0082 { /type "deny"  /glob "GET *.tidy.json*"     }
      /0083 { /type "deny"  /glob "GET *.sysview.xml*"   }
      /0084 { /type "deny"  /glob "GET *.docview.json*"  }
      /0085 { /type "deny"  /glob "GET *.docview.xml*"  }

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー