拙著「上手に稼ぐカラ売りテクニック」が発売されました。
株価が下がる局面で利益を得ることができる「空売り」について、詳しく解説した本です。
自由国民社刊で、定価1,512円(税込)です。
ページにアクセスがあった時に再構築する
Movable Typeの最大のネックは、「再構築」だと思います。
記事が増えるにつれて、再構築の時間も長くなり、「再構築に何時間もかかる」というような方もいます。
再構築の負荷を分散する方法はいろいろありますが、手っ取り早い方法の1つとして、アルファサード有限会社が提供している「Rebuild On Demand」というプラグインを使う方法があります。
意外に知られていないようなので、紹介します。
1.Rebuild On Demandプラグインの仕組み
Rebuild On Demandプラグインは、「オンデマンド(On Demand)再構築」という機能をMovable Typeに追加します。
オンデマンド再構築は、以下のような仕組みで動作します。
- 再構築が必要になったページを、その場で再構築するのではなく、サーバーから削除します。
- サイトの利用者がページにアクセスした時点で、ページのファイルがサーバーにない場合は、そのページを再構築してファイルに保存し、かつブラウザに出力します。
- サイトの利用者がページにアクセスした時点で、ページのファイルがサーバーにあれば、そのファイルがそのままブラウザに出力されます。
サーバーにないページは、動的に再構築される形になります。
そのため、サーバーにないページにたまたまアクセスした利用者には、やや重さを感じさせることになります。
しかし、一度生成されたページは、記事を追加するなどして、次に再構築が必要になるまでの間は、サーバーに存在し続けます。
同じページの2回目以降(次の再構築まで)のアクセスは、サーバーにあるファイルを返すだけになりますので、静的とほとんど同じ軽さになります。
再構築の負荷を分散しつつ、サイトの利用者の負担も極力少なくする仕組みで、合理的だと思います。
2.インストール
2-1.DynamicMTMLのインストール
Rebuild On Demandプラグインは、DynamicMTMLプラグインと組み合わせて使います。
まず、GithubからDynamicMTMLプラグインをダウンロードします。
ダウンロードしたファイルを解凍すると、「addons」と「plugins」のフォルダができますので、これらのフォルダをMovable Typeのインストール先ディレクトリにアップロードします。
そして、Movable Typeにログインし、データベースをアップグレードします。
2-2.Rebuild On Demandプラグインのインストール
次に、Rebuild On Demandプラグインをインストールします。
Githubからダウンロードします。
そのファイルを解凍すると、「plugins」のフォルダができますので、このフォルダをMovable Typeのインストール先ディレクトリにアップロードします。
3.設定
プラグインのインストールが終わったら、オンデマンド再構築を行いたいテンプレートで、その設定をオンにします。
テンプレートを編集する状態にし、「テンプレートの設定」の部分を開きます。
そして、「このテンプレートの再構築をリクエスト時にオンデマンド処理する」のチェックをオンにし、テンプレートを保存します。
これ以後は、オンデマンド再構築をオンにしたテンプレートは、再構築が必要なタイミングになると、実際に再構築されるのではなく、出力されるべきファイルが削除されるだけの動作になります。
そして、そのテンプレートによるページに利用者がアクセスした時点で、実際の再構築が行われます。
4.オンデマンド再構築の効果
オンデマンド再構築では、ここまでで述べたように、従来の再構築の処理は、ファイルを削除するだけの処理になります。
そのため、再構築の(見た目上の)処理時間は大幅に短縮されます。
例えば、以下のような環境でテストを行ってみました。
- 筆者のブログから記事を449件インポート
- テーマはクラシックブログ
- mt-config.cgiに「EntriesPerRebuild 200」の行を追加し、ブログ記事を200件ずつ再構築する
この状態で、ブログ記事アーカイブのみ再構築したところ、通常の状態(オンデマンド再構築をオフ)だと、再構築に1分11秒かかりました。
一方、オンデマンド再構築をオンにすると、再構築はわずか6秒で終了しました。
5.部分的に静的再構築できるようにしたい
アーカイブテンプレートでオンデマンド再構築をオンにすると、そのアーカイブのすべてのページがオンデマンド再構築で表示されるようになります。
しかし、一部のページは静的に出力し、それ以外のページはオンデマンドにしたい、ということもあります。
例えば、ブログ記事アーカイブのうち、最近1か月間の記事は静的に出力し、それより古い記事はオンデマンド再構築にする、といった場合です。
残念ながら、現状のRebuild On Demandプラグインには、このような機能はありません。
ただ、プラグインのコードを改良すれば、今述べたような機能を追加することは可能です。
今後このような機能を追加してみたいと思います。