« Trackbackのテスト | メイン | Catalystでのセッション管理はどれがいいのだろう »

URI::FetchのNoNetworkオプション

URI::FetchのNoNetworkオプションを使うと、Last-Modifiedに関わらず、設定した時間キャッシュを利用するかどうかを調整できる。
CGIなどの動的ページのResponseをキャッシュしてもらいたいときに使える、というか使った。

1時間は必ずキャッシュを「あれば」用いるとき

use URI::Fetch;
use Cache::FileCache;
my $cache = Cache::FileCache->new({
	'namespace'=>'test',
	'default_expires_in'=>3600
});
my $response = URI::Fetch->fetch(
	"http://example.com/example",
	Cache=>$cache,
	NoNetwork=>3600
) or die URI::Fetch->errstr;


NoNetworkオプションは、
0/false の時、デフォルト動作。必ずサーバにリクエストを投げて新しいページを確認する。
1の時、サーバにリクエストを一切行わない。キャッシュにない場合はundefを返す。
1より大きな数字の時、キャッシュがあれば設定した秒数の間はキャッシュを返す。キャッシュにない場合はサーバに取りに行く。

「NoNetwork=>1」とするとオフラインモードが実現できるわけですな。