コンテナと再構築トリガーの設定

どのモデルのオブジェクトが更新されたときにどのビューを再構築させるのかを「URLマップ」の編集画面で指定できます。

コンテナにモデルを指定した時はそのモデルが優先され、指定したモデルのオブジェクトが更新された時は常に再構築されます。あわせて指定可能なトリガーのスコープでは、再構築の対象とするオブジェクトのスコープをシステムやスペースなどに限定することができます。

設定例は下記ページを参照ください。
アーカイブ設定について | PowerCMS X

コンテナと再構築トリガー

コンテナとは、リレーションによって関連づけられたモデル間の関係を示す入れ物・器です。

  • 「カテゴリ」は「記事」のコンテナ
  • 「フォルダ」は「ページ」のコンテナ

例:URLマップ「カテゴリ」を記事のコンテナとして設定

URLマップ「カテゴリ」の設定

URL マップでコンテナが指定されると、以下のように振る舞うようになります。

  • 一覧を出力するテンプレート・タグ、例えば <mt:entries> タグが、そのコンテナ(カテゴリ)に属しているオブジェクトのみに絞り込まれます。
  • コンテナのアーカイブは、配下のオブジェクトに更新がかかった時、削除された時、変更された時 (※) に再構築されます。

※ 変更とは、例えば記事のカテゴリが A から B に変更された時のことで、この場合は A、B の両カテゴリのアーカイブが再構築されます。

一方、再構築トリガーとは、どのモデルのオブジェクトが更新された時にその URL マッピングに該当するファイルを再構築するかを指定するものです。

「コンテナ」と「再構築トリガー」の違い

再構築トリガーはコンテナ指定と異なり、例えば記事のカテゴリが A から B に変更された時、A と B だけでなく、すべてのカテゴリが再構築されます。
よって、オブジェクトやページの数が多い URL マップに対して再構築トリガーを指定すると、そのモデルのオブジェクトを保存した時に行われる再構築の処理が多くなって、次の画面に戻ってくるまでの待ち時間が長くなり、つまり高負荷で重くなるため注意が必要です。

カテゴリがA〜Zまで26個あるとします。記事を作成・更新・削除した時、記事をコンテナに指定した時と、再構築トリガーに指定した時の振る舞いの違いをまとめます。

操作 コンテナ指定時 再構築トリガー指定時
カテゴリBが関連付いている記事Aを更新する カテゴリBのみ更新される カテゴリA〜Zすべて更新される
カテゴリBが関連付いている記事AのカテゴリをAに変更して更新する カテゴリAとBが更新される カテゴリA〜Zすべて更新される

※このように、再構築トリガーでは常にすべてのアーカイブが更新されることになりますので、コンテナ指定のほうが効率的と言えます。

リレーションによって関連付けられたオブジェクト同士を相互に再構築する

コンテナ、再構築トリガー以外に、オブジェクトの更新と連動して特定のページを再構築する仕組みがもう一つあります。プラグイン「RebuildRelations」を利用する方法です。

  • プラグインを有効化する
  • システムプラグイン設定で、参照元モデルとリレーション・モデルを選択して保存する

以下のプラグイン設定画面は、記事モデルに記事のリレーションを設定している時、参照元もしくはリレーション設定されている先の記事が更新された時、関連性のあるものだけに限定して再構築を行う設定です。記事アーカイブに対して記事を再構築トリガーに指定してしまうのに対して、関連性のある記事のみに再構築範囲を限定できるため、効率的です。

RebuildRelationsプラグインの設定画面。記事と記事各々にチェックが入っている。