再構築不要化カスタマイズ(全SQL対応・その3)

2007年3月7日

Movable Type 3.3以降をご利用の方は、MT3.3専用版をお使いください。

詳細はこちらのページを参照してください。

今日は、Perl版ダイナミック・パブリッシングの最後として、キャッシュ機能をオンにする方法を解説します。
また、キャッシュのクリアについても述べます。

なお、一昨日のエントリーでも解説したように、SQLiteの場合はキャッシュ機能は使うことができません。
したがって、SQLiteの方は、今日のエントリーの作業は不要です。

1.データベースアクセス用テンプレートの作成

まず、データベースアクセス用テンプレートを作成します。

Zipファイルを解凍すると、その中に「sqlsub_mysql.php」(MySQL用)と「sqlsub_pgsql.php」(PostgreSQL用)のファイルがあります。
インデックステンプレートを1つ作り、お使いのデータベースに合うファイルの内容をすべて貼り付けます。
そして、「テンプレートの名前」および「出力ファイル名」を、貼り付けたファイルの名前(「sqlsub_mysql.php」など)と同じにしておきます。

テンプレートを作り終わったら、「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」のチェックをオフにしてテンプレートを保存し、再構築しておきます。

2.キャッシュ用テーブルの初期化

次に、キャッシュ用テーブルを初期化します。

解凍したファイルの中に、「mt-dpcache-load.php」ファイルがあります。
インデックステンプレートを1つ作成し、このファイルの内容をすべて貼り付けます。
そして、「テンプレートの名前」および「出力ファイル名」を「mt-dpcache-load.php」にします。

次に、テンプレートの2行目にある「$dppass = "password";」の文を書き換え、初期化の際のパスワードを決めます。
例えば、パスワードを「mypassword」にするなら、この文を「$dppass = "mypassword";」に書き換えます。

テンプレートを作り終わったら、「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」のチェックをオフにしてテンプレートを保存し、再構築します。
そして、以下のURLにアクセスします。

http://BlogのURL/mt-dpcache-load.php?mode=init&pass=上で設定したパスワード

例えば、BlogのURLが「http://www.hogehoge.com/blog」で、パスワードを「mypassword」に設定した場合は、以下のURLにアクセスします。

http://www.hogehoge.com/blog/mt-dpcache-load.php?mode=init&pass=mypassword

「キャッシュ用テーブルを初期化しました。」と表示されれば、キャッシュ用テーブルの初期化は完了です。

3.キャッシュファイル格納用ディレクトリの作成

Blogの出力先ディレクトリの中に、「phpcache」という名前のディレクトリを作ります。
そして、そのパーミッションを「707」に書き換えます。

4.mt-dynamic.phpの書き換え

昨日の手順の中で、「mt-dynamic.php」というテンプレートを作りました。
このテンプレートを一部書き換えて、キャッシュ機能をオンにします。
書き換えるのは以下の2箇所です。書き換えが終わったら、このテンプレートを保存して再構築します。

・3行目「$is_use_cache = 0;」
この行を「$is_use_cache = 1;」に変えます。

・7行目「$max_cache_size = 10000000;」
キャッシュに使うディスク容量を指定します。
例えば、キャッシュとして50MBの容量を使う場合は、この文を「$max_cache_size = 50000000;」に変えます。

キャッシュの容量を多くすれば、それだけ多くのページをキャッシュしておくことができますので、ページをすばやく表示できる確率が上がります。

なお、キャッシュするページが増えて、キャッシュ容量の上限を超えると、キャッシュ内でもっとも古くからあるファイルから順に自動的に削除されます。

5.作業完了

ここまでの作業が終わると、キャッシュ機能がオンになり、一度アクセスされたページは、Blogに何か変更が加わるまでは再構築されなくなります。

6.キャッシュのクリア

時々ですが、キャッシュが壊れることがあるようです。
そのような場合は、以下のアドレスにアクセスすると、キャッシュをクリアすることができます。

http://BlogのURL/mt-dpcache-load.php?mode=clear&pass=手順2.で設定したパスワード

キャッシュをクリアすると、キャッシュ用テーブルの内容と、キャッシュされているHTMLファイル(phpcacheディレクトリのファイル)が削除されます。

7.複数のBlogを管理している場合

1つのMTで複数のBlogを管理していて、それらでPerl版ダイナミック・パブリッシングを使っている場合、キャッシュをクリアすると、キャッシュ用テーブルはすべてクリアされます。
しかし、phpcacheディレクトリは、mt-dpcache-load.phpを含むBlogのもののみクリアされます。
それ以外のBlogのphpcacheディレクトリは、お手数ですが手動で削除してください。