RSS自動解析で分かる集合知:まとめサイト2.0(2/4 ページ)
RSSが公開されていれば、その内容から今何が話題になっているのかを把握することができる。このスクリプトが“まとめサイト”を作るピースの1つだ。
a)要求時にIf-Modified-Sinceヘッダを付ける
Webサーバに対してコンテンツの要求をする際に、「If-Modified-Since」というヘッダを使って日時を渡す。
b)更新されていなければ304ステータスコードが戻る
このヘッダに対応しているWebサーバの場合、もし、a)で指定した日時以降に、コンテンツが更新されていないのであれば、「304 Not Modified」というヘッダが戻り、コンテンツの本体(ボディ部)は返されない。そうではなく更新されているのであれば、通常通り、「200 OK」というヘッダが戻り、コンテンツの本体が返される。
この仕組みを使えば、コンテンツの再取得を最低限に抑えることができる。ただし、すべてのサーバでこの処理が有効になるとは限らない。例えば、CGIによって動的に作られるページの場合は、Last-Modifiedヘッダには、常にリクエストした日時が返されることもある。
似た仕組みとしてETagヘッダとIf-None-Matchヘッダを使う方法もある。これはコンテンツごとに設定されるユニークな値(ハッシュ値)を比較することで、更新されたかどうかを調べるものである。
LWPモジュールを使ってコンテンツを取得する
上記で述べた2点を考慮し、作った関数をリスト1に示す。リスト1のgetWebContent関数は、次のようにして呼び出すことを想定している。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最終更新日時にundef値を渡した場合には、If-Modified-Sinceヘッダを付加しないようにしている。
次ページにリスト1を示す。
Copyright © ITmedia, Inc. All Rights Reserved.