本文へジャンプ

Movable Typeの手動・公開キュー・スタティックの再構築トリガーを検証してみた件

Movable Typeのテンプレートには個別に「公開プロファイル」を設定できます。
公開プロファイルとは、そのテンプレートをどういうタイミングで再構築するかどうかを決めるものです。

この「公開プロファイル」が再構築トリガーごとにどういう挙動になるかを検証してみたいと思います。

公開プロファイルとは

スタティック

スタティックは、もちろん、記事の更新に連動して再構築されます。
一般的に運用上はこれが一番いいのですが、記事数が多くなってきたりテンプレート内容が複雑に連携してくると、再構築に時間がかかるようになります。

公開キュー

記事の更新にリアルタイムには連動しません。
設定したタイミングでまとめてバックグラウンドで再構築を行います。
バックグラウンドで行うので、再構築の負荷分散ができるのが特徴です。
実行のタイミングは「cron」にて「run-periodic-tasks」スクリプトを設定します。

手動

手動なので、記事の更新に連動しません。
とくに自動で更新する必要のないテンプレートなどは「手動」にしておけば、無駄に再構築しなくてすむでしょう。

ダイナミック

WordPressなどとおなじようにリアルタイム再構築(動的)となります。
PHPを経由して描画を行うのでテンプレートの書き方も少し変わってきます。
今回はダイナミックについては割愛します。

基本的な再構築の連動

記事を投稿すると、記事に関連するアーカイブテンプレートとインデックステンプレートが再構築されます。

例えば、以下の条件の場合、

  • 記事の公開日が2019年6月
  • カテゴリAに所属

再構築されるのは、

  • 記事の詳細ページ
  • 年別アーカイブの「2019年」、月別アーカイブの「2019年6月」
  • カテゴリアーカイブの「カテゴリA」
  • インデックステンプレート

の4点になります。
記事と関係しない「カテゴリ」のページは再構築されません。
その他のアーカイブテンプレート、インデックステンプレートはすべて再構築されます。

ちなみに再構築は詳細ページから順番に行われ、最後はインデックステンプレートになります。

各公開プロファイルの動作を検証してみる

再構築の負荷を考慮しなければ、全てスタティックのほうが運用上よいってことはわかりきっています。
ただ長期運用していくと、どうしても記事数の増加などにより再構築の負荷は高まっていき、スタティックだと不満が出てきたりします。

その場合、更新頻度の高い/低い部分を判断して再構築の負荷軽減を考えないといけません。
そのためにもどういうふうに再構築が連動されているのかを知る必要があります。

今回は、実際に記事を更新してみてどのページが再構築されていくのかを検証してみたいと思います。

検証の条件

  • Movable Type6.5を使用。
  • インストールからとくにいじっていないデフォルト状態。
  • テーマは「Rainier 1.22」を使用。
  • 日付とカテゴリが異なる記事を2点用意。
  • 記事詳細ページには、前後の記事リンクは削除。
  • 公開キューや日時指定のためにcron設定済み。

記事のステータスを「公開」にした場合

手動

  • どのページも再構築されませんでした。

スタティック

  • インデックテンプレート:すべて再構築された
  • カテゴリアーカイブページ: 関連するカテゴリ"のみ"再構築された
  • 年別アーカイブ:自分の年と前後年のページが再構築された
  • 月別アーカイブ:自分の月と前後月のページが再構築された
  • 記事アーカイブ:公開した記事と前後の記事も再構築された

公開キュー

  • 動作はすべてバックグラウンド再構築。
  • スタティックと同じ条件で再構築された。

記事のステータスを「未公開(原稿)」にした場合

手動

  • どのページも再構築されませんでした。

スタティック

  • インデックテンプレート:すべて再構築された
  • カテゴリアーカイブページ: 関連するカテゴリ"のみ"再構築された
  • 年別アーカイブ:自分の年と前後年のページが再構築された
  • 月別アーカイブ:自分の月と前後月のページが再構築された
  • 記事アーカイブ:公開した記事と前後の記事も再構築された

公開キュー

  • 動作はすべてバックグラウンド再構築。
  • スタティックと同じ条件で再構築された。

記事のステータスを「日時指定」にした場合

手動

  • どのページも再構築されませんでした。

スタティック

  • インデックテンプレート:すべて再構築された
  • カテゴリアーカイブページ: 関連するカテゴリ"のみ"再構築された
  • 年別アーカイブ:自分の年"のみ"再構築された
  • 月別アーカイブ:自分の月と前後月のページが再構築された
  • 記事アーカイブ:公開した記事と前後の記事も再構築された

公開キュー

  • 動作はすべてバックグラウンド再構築。
  • スタティックと同じ条件で再構築された。

記事のステータスを「 公開終了日 」を設定した場合

手動

  • どのページも再構築されませんでした。

スタティック

  • インデックテンプレート:すべて再構築された
  • カテゴリアーカイブページ: 関連するカテゴリ"のみ"再構築された
  • 年別アーカイブ:自分の年"のみ"再構築された
  • 月別アーカイブ:自分の月と前後月のページが再構築された
  • 記事アーカイブ:公開した記事と前後の記事も再構築された

公開キュー

  • 動作はすべてバックグラウンド再構築。
  • スタティックと同じ条件で再構築された。

ブログの再構築の場合

手動

  • どのページも再構築されませんでした。

スタティック

  • すべてのページが再構築された。

公開キュー

  • 動作はすべてバックグラウンド再構築。
  • すべてのページが再構築された。

QuickRebuildの場合

手動

  • どのページも再構築されませんでした。

スタティック

  • すべてのページが再構築された。

公開キュー

  • 動作はすべてバックグラウンド再構築。
  • すべてのページが再構築された。


と、以上のような結果になりました。

検証を終えて

記事を更新すると、
インデックステンプレートはもちろんすべて再構築はされるだろうというのはわかっていました。

意外だったのは、以下の点。

  • 年・月のアーカイブの場合前後のページまで再構築される。
  • 日時指定の公開/非公開の場合は、その挙動が少し変わる。
  • 記事も前後のページが再構築される。

<mt:EntryPrevious> や <mt:EntryNext> などの前後のページを出力するタグがあれば、連動して再構築されるのはわかりますが、タグがない場合でも前後のページが再構築される仕様になっています。


次回は、「マルチブログプラグイン」や「再構築トリガー指定」などを検証したいと思います。

Recent Entries
MD EVENT REPORT
What's Hot?