Movable Type 4.2でキャッシュ付きダイナミックパブリッシングでのページ分割

長いタイトルになってしまったが、
MT4.2のダイナミックパブリッシングでのページ分割の続き。

ダイナミックパブリッシングでのページ分割
http://www.movabletype.jp/documentation/designer/pagination.html
をやってPagerに対応したものの、ダイナミックパブリッシングのキャッシュがONになっていると2ページ目を表示しても1ページのキャッシュが表示されてしまうという問題があります。

つーわけで、cacheidにPagerを意識させてみた。

修正するのはmt/php/mt.php

ちなみにphp/lib/MTViewer.phpがsmartyの派生クラスで、こいつがmt/php/mt.phpから呼ばれる。

mt.phpの523行目あたりを見ると、MTクラスのviewメソッドにおいて、MTViewer、すなわちsmartyに渡すcacheidが次のようになっている。

$cache_id = $blog_id.’;’.$fi_path;
$fi_pathをつくるときにクエリストリングなどはきれいに除去されてしまっているので、ここにさらにlimitとoffsetを追加すればよい。

// 修正前
$cache_id = $blog_id.';'.$fi_path;
// 修正後
$cache_id = $blog_id.';'.$fi_path;
if (isset($_REQUEST['limit']) || isset($_REQUEST['offset'])) {
$cache_id .= ":".$_REQUEST['limit'].":".$_REQUEST['offset'];
}

たくさんページキャッシュができてしまうのが場合によっては問題。ファイルサイズの問題もあれば、ファイル数の問題もある。適当にキャッシュディレクトリを散らしたいところ。

しかし、ページキャッシュあると速いわ。なんか知らんがMT4に移行したときにページキャッシュがオフになってしまっていたので、なおさら速く感じる。

人見知りソフトウェアエンジニアです。ビジュアル系、お笑い、Pixarが好き。勢いで吉本超合金おたけびBOTを作った。オールザッツ漫才が放送されない東京在住。

趣味や日常からアウトプットの場としてブログを書いています。自作のWordPressプラグインにGitHub Flavored MarkdownAmazonJSなど。