テンプレートモジュールのキャッシュ
MTInclude ファンクションタグで読み込むテンプレートモジュール、ウィジェットの内容をキャッシュできます。
テンプレートモジュールのキャッシュ機能を使用するには、[設定] > [全般] > [モジュール設定]の [モジュールのキャッシュ] をチェックします。
テンプレートモジュール、ウィジェット単位のキャッシュ設定
テンプレートモジュール、ウィジェット単位でキャッシュの設定は、各テンプレート編集画面の[テンプレートの設定]で行います。
各テンプレートモジュール、ウィジェット編集画面の[テンプレートの設定] にある [モジュールのキャッシュ] をチェックします。
キャッシュの生存時間を設定したい場合は、[キャッシュの有効期限] で時間の設定を行います。また、特定のコンテンツが新規作成または更新された場合、キャッシュをクリアするように設定したい場合は、[作成または更新後に無効にする]のラジオボタンをオンにして、対象となるコンテンツのチェックボックスをチェックします。
キャッシュの更新は、テンプレートが「再構築」されたタイミングで更新されます。キャッシュの有効期限は再構築のタイミングで一度クリアされます。
キャッシュクリアの例外
キャッシュされたデータは、テンプレートが再構築されるタイミングでデータがクリアされます。
しかし、テンプレートが再構築されても、<MTIf>・・・</MTIf>などの条件分岐で囲まれている場合、その部分はキャッシュが更新されず、データが残る場合があります。
例えば、<MTIf name="main_index">・・・</MTIf>というタグで囲まれているテンプレートは、インデックステンプレートのメインインデックス内で再構築されない限り、キャッシュデータがクリアされず、データが残り続けます。
もしテンプレートが再構築されたにもかかわらず、キャッシュデータがクリアされない場合、条件分岐の例外に当たらないか、ご確認ください。
テンプレートタグを使用して、読み込むテンプレートモジュールをキャッシュする
テンプレートモジュール、ウィジェット個々ではなく、ひとつのテンプート内でテンプレートモジュールを読み込む MTInclude ファンクションタグごとに、キャッシュに関する設定をしたいときは、key モディファイア ttl モディファイア、または cache モディファイアを付与します。いづれかのモディファイアが付与されると、その MTInclude ファンクションタグで読み込まれるテンプレートモジュールの内容はキャッシュされ、生存期間内であれば再構築を行わず出力ファイルに反映されます。
cache="1 | 0"
-
読み込むテンプレートモジュールの内容をキャッシュしたいときは、値に 1 を設定します。cache モディファイアのみを付与した場合は、キャッシュのキーは自動発行され、キャッシュの生存時間は60分に設定されます。キーや生存時間を別途設定したい場合は、
key
モディファイアかttl
モディファイアと併用します。テンプレートのカスタマイズや、デザインの調整などを行っているときは、0 に設定すると良いでしょう。
key="cache_key"
-
キャッシュのキーを設定します。このモディファイアは ttl または cache モディファイアが付与されていれば省略可能で、省略されたときは、自動的に key が発行されます。
ttl="0"
-
キャッシュの生存時間(単位は秒)を設定します。このモディファイアは key または cache もディファイアが設定されていれば省略可能で省略されたときは、初期値の60分が設定されます。
永久にキャッシュを保持したいときは、値に 0 と設定します。永久にキャッシュを保持する設定は、テンプレートタグで
ttl
モディファイアを使用した場合に設定できます。
以下は [サンプル] というテンプレートモジュールの内容をキャッシュする各種サンプルです。
- キーは自動発行、生存時間は初期値の60分に設定
-
<$MTInclude module="サンプル" cache="1"$>
- キーは sample とし、キャッシュの生存時間は初期値の60分
-
<$MTInclude module="サンプル" cache="1" key="sample"$>
または
<$MTInclude module="サンプル" key="sample"$>
- キーは自動発行、生存時間を10分 (600秒) と設定
-
<$MTInclude module="サンプル" cache="1" ttl="600"$>
または
<$MTInclude module="サンプル" ttl="600"$>
- キーを sample キャッシュの生存時間を10分 (600秒) と設定
-
<$MTInclude module="サンプル" key="sample" ttl="600"$>
SetVar などの変数をあつかうテンプレートタグと組み合わせると、key
モディファイアに変数を使った柔軟なテンプレートを作成できます。
次の例はカテゴリーごとに、関連ブログ記事のリストウィジェットの内容をキャッシュする例です。
<mt:SetVarBlock name="cache_key"><mt:EntryCategory></mt:SetVarBlock>
<mt:Include widget="Related Entries" key="$cache_key" ttl="3600" cache="1">