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プラグインは、検索結果のような動的処理でなくとも、通常の静的パブリッシングの際の再構築処理にも利用できます。
コメントを投稿する