Movable Type BuildFileFilter4OldArchiveプラグイン。
公開日 : 2007-07-11 20:12:25
まだやるか!(笑)
前回の問題の答え
「何日以前」に更新されたエントリーは再構築しないという方法だと、例えば前回再構築した時から次の再構築の間の日から「何日以前」に更新されたエントリーが場合によってはおかしなことになってしまうわけですね(わかりにくい表現ですけど、まぁとにかくそういう問題があったわけで)。
なので、「20070101000000」のようにタイムスタンプで指定して、「その日以前に更新(作成)されたエントリーアーカイブを再構築しない」仕様にするとともに、日付アーカイブに対応させた。つまり月別アーカイブとかも古いものは再構築しないように指定できる。
実際にこのブログも前のエントリーで書いたJavaScriptモジュール化と組み合わせて以下のように変更してみた。
- 2007年6月以前のエントリーアーカイブ、2007年6月以前のマンスリーアーカイブの再構築をしない。
- 再構築をしない古いアーカイブはJavaScriptモジュールで新しいページと同様の「サイドバー(右カラム)」を表示。
- JavaScriptがオフの環境のために、MTのデフォルトテンプレートに近い「前後のアーカイブへのリンク」と「全体のアーカイブページへのリンク」からなる「代替サイドバー」をnoscript要素内に配置。
*これで全再構築(実際は全再構築じゃないけど)の所要時間が35秒前後から15秒前後へ短縮された。
古いアーカイブの右カラム
JavaScriptオフの場合
新しいエントリーの右カラム又は古いアーカイブでJavaScriptがオンの場合
ダウンロード
*効果を実感するためにBackground Rebuilderと一緒に使って欲しい。
ライセンス
パブリックドメイン。自分の作成するプラグインのライセンスについてはちょっと考えるところがあって、MTOSについての何らかのアナウンスがあった際に再度定義し直そうかと考えている。
あと、ライセンスの件とは関係ないが、V4では動作確認していないので。
利用の手順
何日以前に作成もしくは更新されたエントリー/日付アーカイブを再構築対象から外すかをタイムスタンプ(例:20070101000000)で指定。再構築対象期間を短くすればする程短時間で再構築が済む。
エントリーの場合 created_on(作成日)とmodified_on(更新日)のどちらをキーにするかをラジオボタンで指定する(まだこの段階では上のチェックボックスはオフのまま)。
条件タグを一つ用意したので、エントリーアーカイブのテンプレートに手を入れる。
<MTIfOlderArchive>
20070101000000以前に更新(作成)されたエントリーです。古いです。
<MTElse>
古くないです。
</MTElse>
</MTIfOlderArchive>
テンプレートの修正が終了して保存したら一旦全再構築をかける。
再びプラグイン設定画面に移動して、「Filter Active.」にチェック→「変更を保存」。以上で設定終了。
指定した日数以前に更新(作成)されたエントリーアーカイブは「再構築」が行われなくなる。
利用方法についてのアイデア
- 古いエントリーや日付アーカイブへのアクセスが殆ど無い場合、古いエントリーアーカイブはモジュール部分をSSI,PHP,JavaScript等でインクルードする。新しいアーカイブはアクセスが多いので静的生成する。
- 古いエントリーではモジュールは使わない (最近のエントリーとか最近のコメント/トラックバックとかは表示させない)。
- 古いエントリーのコメントやトラックバックを無効にする。
- RebuildAt1stViewやダイナミックパブリッシングと組み合わせる。アクセスの少ない部分はダイナミック、アクセスの多い部分は静的生成という使い分けが可能になる。