わっちりんく(す)の更新時刻取得の方法

概要

基本的に

  1. HEAD request を出す
  2. HEAD で取れなかった場合は GET request を出す

といった手順で更新時刻を取得している。

1. HEAD request

該当 URI に HEAD request を出し、レスポンスに Last-Modified: があればそれを利用する。

Web server に対して負荷が軽いので、これだけで取得に成功するのが望ましい。

1-a. 設定をいじれる人向け

サーバが Apache ならば .htaccess に

XBitHack full

と書いて、対象のファイルに group execute permission をつけておくと、SSI が実行できるように なっていても HEAD で Last-Modified: が出るようになる。ぶっちゃけた話、

% chmod +x foo.html

でおっけー。詳しく知りたい人は Apache のマニュアルを見よ。

2. GET request

HEAD request で更新時刻を取ることができない URI は、たいてい SSI(Server Side Include) が有効になっている場合が多い。その場合、該当 URI に GET request を出し、以下のような書式が 記述されている行から更新時刻を取得する。

2-a.

<head></head> 内に

<meta http-equiv="Last-Modified" content="GMT での更新時刻">

と記述された行から更新時刻を取得する。具体的には

<head>
<meta http-equiv="Last-Modified" content="Sunday, 18 Aug 1996 12:34:56 GMT">
<title>ほげほげ</title>
</head>

のようになる。「GMT での更新時刻」と書いてもダメです :-(

この形式で記述しておくと、WWWC で チェックタブの下にある「META タグを使ったチェックを行う」をチェックして

タイプ:     http-equiv
タイプ名:   Last-Modified
コンテンツ: content

と設定すれば更新時刻がチェックできるようになるのでオススメ。

2-b.

<body> 以降に(直後が望ましい)

Last-Modified: <!--#flastmod file="ファイル名"-->

もしくは

Last-Modified: <!--#echo var="LAST_MODIFIED"-->

と書いておくと SSI により更新時刻に展開されるので、その行から更新時刻を取得する。 コメント(<!-- -->)にされていても、そこから取得する。

2-c.

一行に収まる範囲で「年(4 桁が望ましい)・月・日・時・分」の組み合わせで更新時刻が記述されている 行から取得する。対応しているフォーマットは以下のとおり。

dd mmm yyyy HH:MM:SS GMT
dd-mmm-yyyy HH:MM:SS GMT
dd mmm yyyy HH:MM:SS
dd-mmm-yyyy HH:MM:SS
mmm dd HH:MM:SS JST yyyy
mmm dd HH:MM:SS yyyy
yyyy-mm-dd HH:MM
dd-mmm-yyyy HH:MM
yyyy/mm/dd HH:MM
$Id: .*,v .* yyyy/mm/dd HH:MM:SS .* $ (RCS $Id$ -z なし)

たとえば

1996/08/18 21:34
18-Aug-1996 21:34

などと書いてあると、これをそのまま利用する。

3. その他

本来の URI ではなく、別 URI の更新時刻上記の書式で別 URI に本来の URI の更新時刻が記述されてあるものも情報源として利用することもできるので それを使うこともある。
©1996-2000 Kazuya 'Sharl' Masuda <sharl&$32;@ hauN.org>