3倍速再構築!?(MTCMSCacheプラグイン)。
公開日 : 2009-01-20 01:33:57
また同じようなものを書いてしまった...
ドキュメントは明日くらいに時間があったら書きます。要はmt:sectionタグとかMTのテンプレートキャッシュのように時間ベースではなくて、オブジェクトが更新された時にしかるべきキャッシュがクリアされて欲しい...ということで名前の通り元々はCMS(管理画面)用に作ったのですが、デザイン・テンプレートにも使えると思うので晒しておきます。
例:ダッシュボードのタグ・クラウドとか「mt:section」タグ使う事でキャッシュされてます。これ、mt_sessionテーブルにsession_kind「CO」、session_dataにBLOB型のデータとして保存されてるみたいなんですが、有効期限が時間で設定されているだけで、オブジェクトに変化があったかどうかを考慮してキャッシュをクリアしてくれるわけではありません。例えば「タグ」をひとつ削除してもダッシュボードの「タグ・クラウド」は一定時間変更されません。この辺、「割り切った」実装であることはわかるのですが、明示的に関連するデータが変更された時にキャッシュがクリアされるような仕組みがあったらいいな...と思って。
先日公開したMTRequestCacheタグもちょっと仕様を変更してマージしてあります。
テンプレートにもよりますけど、適切に設定してやれば2〜3倍くらいのスピードは出るかも。
# *** Default expires time is 600 (sec)
# If you want to change expires time, add to mt-config.cgi like this,
#
# CMSTemplateCachePeriod 600
#
# *** Template Tags
#
# <MTCMSCacheBlock key="CategoryEntries" blog_id="$blog_id" object_ds="category"
# object_id="$category_id" by_user="1" children="1" primary="1" ttl="3600">
# Some template tags here.
# ( Clear cache when entry ( page ) is in ( primary ) category ( folder ) (Id:$category_id) changes. )
# </MTCMSCacheBlock>
#
#
# <MTCMSCacheBlock key="EntrySummary" blog_id="$blog_id" object_ds="entry" object_id="$entry_id" children="1">
# Some template tags here. ( Clear cache when entry ( page ), comment and trackback changes. )
# </MTCMSCacheBlock>
#
#
# <MTCMSCacheBlock key="TagsBlock" blog_id="$blog_id" object_ds="tag" object_id="0" children="1">
# Some template tags here. ( Clear cache when tag and tagged entry changes. )
# </MTCMSCacheBlock>
#
#
# <MTSetVarBlock name="key">RecentEntries_<$MTCategoryId$></MTSetVarBlock>
# <MTRequestCacheBlock key="$key" blog_id="$blog_id">
# Some template tags here. ( Clear cache when application request exit. )
# </MTRequestCacheBlock>