Perl版ダイナミックパブリッシングとRebuildAt1stViewの違い

昨日、Twitterを見ていると、以下のようなツイートを見かけました。

H.FujimotoさんのPerl版ダイナミックパブリッシングと、Junnnamaさんの RebildAt1stViewの違いって何なのでしょうか?どなたかご存知の方、教えていただけると幸いです。

どちらも「ページにアクセスがあった時点で再構築」という点は同じですが、細部の動作は違います。
そこで、両者の違いを大まかにお答えします。

1.Perl版ダイナミックパブリッシング

Perl版ダイナミックパブリッシングは、ページにアクセスがあった時点で、以下の処理を行います。

  • そのページがキャッシュにあるかどうかを確認します。
  • キャッシュにページがあれば、キャッシュの内容を出力します。
  • キャッシュがなければ再構築を行い、その結果を出力するとともに、キャッシュに保存します。
  • ブログに何らかの変更を加えると(ブログ記事の保存等)、キャッシュを無効化します。

このような動作を行うため、キャッシュにないページは表示に時間がかかりますが、一度キャッシュされたページは静的に近い速度で表示することができます。
また、ダイナミックに設定したページは、通常の(管理画面での)再構築が不要になります。

ただし、キャッシュされているページであっても、ページにアクセスがあった際にはキャッシュをチェックする処理が必要です。
その際にデータベースにアクセスするため、ページにアクセスされた時の負荷は、完全な静的よりも若干高いです。

2.RebuildAt1stView

一方のRebuilaAt1stViewプラグインは、ページにアクセスがあった時点で、以下の処理を行います。

  • .htaccessで実ファイルが存在するかどうかをチェックし、存在すれば実ファイルが出力されます。
  • 存在しない場合は、ページを再構築してその結果を出力し、それとともに実ファイルを保存します。

また、RebuildAt1stViewプラグインでは、通常の(管理画面での)再構築は不要になりません。
例えば、アーカイブテンプレートを書き換えた時には、管理画面でそのアーカイブ全体を再構築する必要が生じます。

ただ、管理画面上での再構築時の処理は、テンプレートを解釈してページを作る作業ではなくなります。
単に、ページの実ファイルを削除するだけの処理になります(これによって、次回にページにアクセスがあった時に、RebuildAt1stViewプラグインが動作するようになります)。
そのため、再構築の待ち時間を大幅に短縮することができます。

また、キャッシュではなく実ファイルを保存する仕組みなので、一度実ファイルが作られた後は、ページにアクセスされた時の負荷は、完全な静的の場合とほぼ同じです(.htaccessの処理の負荷が増えるだけ)。

3.手軽さを取るか負荷を取るか

ここまでの話から、大まかにいえば、手軽に扱える(再構築が不要になる)ことを取るか、それともページにアクセスされた時の負荷の低さを取るかで、選択肢が変わってきます。
手軽さを取るなら、Perl版ダイナミックパブリッシングが適しています。
一方、負荷対策に重きを置くなら、RebuildAt1stViewです。