PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > PowerCMS 3 > mt-search.cgi, mt-estraier.cgi の検索結果をキャッシュする

2012年11月01日

mt-search.cgi, mt-estraier.cgi の検索結果をキャッシュする

mt-search.cgiや mt-estraier.cgi で検索した結果をキャッシュして、同一条件で検索リクエストを投げた際に検索を行わずに既に実行された検索結果を直接返すことにより、検索レスポンスの向上とサーバー負荷の軽減を行いたいといったケースで使える2つのプラグインをご紹介します。MTのデータベースを利用するため、プラグインの導入とテンプレートタグの設定のみで利用できます。

テンプレート作成の前に、以下の2つのプラグインをダウンロードしてMTのプラグインディレクトリにインストールしてください。

mt:QueryString(ファンクションタグ)
クエリー文字列を出力します(foo=bar&buzz=fuga)。
mt:BuildCache(ブロックタグ)
keyモディファイアで指定したキー毎に、ttlで指定した秒数、評価した結果をキャッシュします。

クエリー文字列をキーにして、1時間有効なキャッシュを指定するテンプレートは以下のようになります。

<mt:QueryString setvar="query_string">
<mt:BuildCache key="$query_string" ttl="3600">
この内容がキャッシュされる
</mt:BuildCache>

マルチデバイス対応をMTMLで行っている場合、同一パラメタでも表示が異なるためそのままキャッシュできません。以下のようにテンプレートをカスタマイズすることで、デバイス毎に別のキーを指定してキャッシュすることができます。

<mt:setvar name="device" value="pc">
<mt:IfUserAgent wants="smartphone">
    <mt:setvar name="device" value="sp">
<mt:Else>
    <mt:IfUserAgent wants="keitai">
        <mt:setvar name="device" value="fp">
    </mt:IfUserAgent>
</mt:IfUserAgent>

<mt:SetVarBlock name="cache_key"><mt:Var name="device">-<mt:QueryString></SetVarBlock>

<mt:BuildCache key="$cache_key" ttl="3600">
デバイス毎のキーでキャッシュされる
</mt:BuildCache>

mt:BuildCacheプラグインは、検索結果のような動的処理でなくとも、通常の静的パブリッシングの際の再構築処理にも利用できます。


カテゴリー
PowerCMS 3
テンプレート作成Tips
プラグイン
技術情報

Recent Entries