2003-10-12 [長年日記]

_1 [Wiki] Hiki と HikiFarm の Last-Modified 対応

まずは、HikiFarm へのアクセスに Last-Modified として、配下の Hiki 群の最新ページの Last-Modified を返すように修正しました。もともとそれぞれの Hiki の最新ページの情報を集めるコードになっているので、ちょっとした修正ですみました。ここまでは一般人コースです。cvs up するだけで使えます。

次に、第二 tDiary.Net の HEAD アクセスの激速化の要領で、HikiFarm および Hiki へのアクセスも速攻で返すように調整しました。

まずは、ページ更新時に mtime が更新されるファイルを作る、こんなプラグインを置きます

add_update_proc {
  antenna_update
}

def antenna_update
  antenna_dir = '/home/wiki/html/.antenna'
  wiki = File.basename( $data_path )
  File.new("#{antenna_dir}/#{wiki}", 'w').close
  File.new("#{antenna_dir}/.wikifarm", 'w').close # HikiFarm 用
end

(もちろん、プラグイン設置後に更新されるまで上記のファイルができませんので、あらかじめそれらは用意しておきます。)

あとは、HEAD アクセス時にその mtime が更新されるファイルを返すだけです。以下は HikiFarm の CGI が置いてある場所の .htacecss の追記例です。

RewriteEngine on
# HikiFarm 宛
RewriteCond %{REQUEST_METHOD} HEAD
RewriteRule ^/?$ .antenna/.wikifarm [L]
# 各 Hiki 宛
RewriteCond %{REQUEST_METHOD} HEAD
RewriteRule ^([^/]+)/?$ .antenna/$1 [L]

この方法だと、Hikifarm 配下の各 Hiki のトップへのアクセス時に、その Hiki 内の最新のページの更新情報を返してくれます。

そういうわけで、fdiary.net wikifarm 全体の更新情報を知りたい方は、http://wiki.fdiary.net/ をアンテナに加えればよく、fdiary.net wikifarm 以下の特定の Hiki の更新情報を知りたい方は、その Hiki のトップの URI をアンテナに加えればよいということになります。

上記のように、これらの HEAD アクセスは CGI を介さずに応答しますから、大した負荷ではありませんので、どうぞご利用ください。

[]