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」とするとオフラインモードが実現できるわけですな。