entries_kache plug-in †
エントリを最初に登録した日時をエントリファイル内に記録するなどして保持することが可能になる entries_cache プラグイン を改良したプラグインです。 entries_cache プラグイン 同様、インデックス情報をファイルとして出力し、これをキャッシュとして用いますので、大量のエントリを保持するサイトの場合、効率にも大変寄与します。
また蛇足ですが、当方で公開している gsitemap プラグイン をご使用にされる場合は、この entries_kache プラグイン の導入がほぼ必須になります。
導入方針の決定 †
この entries_kache プラグイン は、エントリファイルをアップロードしたときのタイムスタンプを恒久的に維持することが目的のプラグインですが、そのタイムスタンプを維持する方法が二通り提供されています。
- エントリファイルにメタデータを直接記述する*1
- アップロードしたときのタイムスタンプをインデックスファイルに記録する
このプラグインを使用している方は、上記のエントリファイルにメタデータを記述する、もしくは entries_kache プラグイン にはアップロードしたときのタイムスタンプをエントリファイルに直接、追記する機能がありますのでこれを利用している方が多いようです。
しかしながら、当方の Ellinikonblue.com Weblog では、アップロードしたときのタイムスタンプをインデックスファイルに記録するだけの方法を使用しています。
これはメタデータをエントリファイルに追記する場合は、エントリファイルの改行コードが LF だけ( UNIX の改行コード)になっていることが必須があるためで、当方ではすべてのエントリファイルが、導入時点ですべて CR+LF ( Windows の改行コード)になっていて、これをすべて変換することが労力的に大変だったためこの方法を採用しました。
このため、以下の導入のための説明では 「アップロードしたときのタイムスタンプはインデックスファイルのみに記録する」 という方針で導入することとします。
メタデータをエントリに記述する方針を選ばれる方は、このページの最後のリンク集に紹介しているサイトの記事を参考にして取り組んでください。
プラグイン本体の編集 †
「アップロードしたときのタイムスタンプはインデックスファイルのみに記録する」場合、entries_kache プラグイン 本体を編集して、以下の変数を変更します。
- $delay
- インデックスファイルの更新間隔を指定します。デフォルトは 60 で、1 時間( 60 分)間隔でインデックスファイルが更新されるようになります。問題がなければ特に変更する必要はありません。
- $indexname
- エントリファイルのタイムスタンプを記録するファイル名をフルパスで指定します。問題がなければ特に変更する必要はありません。
- $others_indexname
- データディレクトリにあるエントリファイル以外のファイルのタイムスタンプを記録するファイル名をフルパスで指定します。問題がなければ特に変更する必要はありません。
- $update_meta_date
- エントリファイルにメタデータがない場合、追記するかどうかを決定するフラッグです。デフォルトは 1 (追記する)ですが、ここでの説明ではメタデータを使用しませんので 0 を指定します。
- $meta_timestamp
$meta_date - メタデータ記述用のキーワードを指定します。ここでの説明では使用しませんので、変更の必要もありません。
- $strip_meta_dates
- エントリファイルからページを生成する際、メタデータを取り除くかどうかを指定します。デフォルトは 1 (取り除く)。ここでの説明では使用しませんが、プラグインの動作を軽くするため 0 (取り除かない)を指定します。 meta プラグイン を併用している際にも 0 を指定する必要があるかもしれません。
- $debug
- (プラグイン)デバッグ用のフラッグでデフォルトは 0 (デバックモードではない)。特に変更する必要はありません。
以上でプラグイン本体の変更は終了です。
アップロード †
プラグイン本体の変更後、プラグインディレクトリに変更したプラグイン本体をアップロードしてから、サイトにアクセスすると、現在の各エントリのタイムスタンプをもとにインデックスファイル(変数 $indexname で指定したファイル)が生成されます。
以上で導入は終了です。
entries_index プラグイン からの移行方法 †
以上の説明は「アップロードしたときのタイムスタンプはインデックスファイルのみに記録する」方針で、全く新規にインストールする場合の説明です。
blosxom を使用している多くの方が、既に同種の entries_index プラグイン の導入をされていることが多いと思われますので、以下ではこの場合の移行方法をご説明します。
entries_index プラグイン補助ツール を使用する †
一つ目の方法は、Extension3 で公開されている 「 entries_index プラグイン補助ツール」 を使用する方法です。この方法は当方でも採用した方法です。
entries_kache プラグイン 本体編集後、アップロード前に、上記の補助ツールを利用して、entries_index プラグイン が生成したインデックス情報をもとに、すべてのエントリファイルのタイムスタンプそのものを変更してしまいます。
上記の補助ツールは CGI になっていますので、ダウンロードして本体の記述内容をよく読んを編集しアップロードして、そのアップロードした先の URL へアクセスして使用します。ここではこの補助ツールの使用方法は割愛します。
この方法であれば、ここまで説明した entries_kache プラグイン の導入方法そのまま使えます。
entries_index プラグイン のインデックスファイルを直接取り込む †
実はもうちょっと簡単な解決方法があります。
entries_kache プラグイン が生成するインデックスファイルは、その形式が entries_index プラグイン の生成するインデックスファイルと酷似しています。従って、
- entries_kache プラグイン の変数 $indexname で指定するファイルで、 entries_index プラグイン が生成するインデックスファイル*2 を直接指定する。
- entries_index プラグイン が生成するインデックスファイル名前を entries_kache プラグイン の変数 $indexname 指定したファイル名に変更するかコピーしてから、entries_index プラグイン を削除の上、entries_kache プラグイン をアップロードする。
以上、どちらかの方法で、entries_index プラグイン 形式のインデックスファイルを読み込み、次回、インデックスファイル更新のタイミングで entries_kache プラグイン 形式のインデックスファイルを出力するようになります。
インデックスの再構築 †
entries_kache プラグイン 導入後、新規エントリを登録した場合などはインデックスの再構築という作業が必要になります。この作業をしないと、インデックス更新タイミングではない場合、ファイルのチェックしなくなりますので、最悪 60 分間(初期設定の場合)、新規に登録したエントリがページに表示されません。
新規にエントリを登録した場合などは、例えば下記のように blosxom.cgi のあとに 「 ?reindex=1 」をつけた URL にアクセスすると、インデックスの再構築が強制的に行われます。
http://www.yourdomain.net/blosxom.cgi?reindex=1