nDiki : Cache::Cache

Cache::Cache

Perlキャッシュ関連モジュールライブラリ。 Perl 5.005_03 でも利用可能(Cache-Cache-1.04)。

同様のライブラリとして Cache がある。

キャッシュ実装のバリエーション

ライブラリに含まれているキャッシュ実装としては以下のようなものがある。

Cache::FileCacheファイルベースのキャッシュ
Cache::MemoryCacheメモキャッシュ
Cache::SharedMemoryCache共有メモリでのキャッシュ
Cache::SizeAwareFileCacheファイルベースのキャッシュ (最大容量制限有)
Cache::SizeAwareMemoryCacheメモキャッシュ (最大容量制限有)
Cache::SizeAwareSharedMemoryCache共有メモリでのキャッシュ (最大容量制限有)
page:Cache::NullCacheキャッシュをしない

Cache::Cache を使う時にロック処理が必要?

Cache::FileCache系では、一時ファイルとアトミックな rename を使うことで書き込み時のロックを省略している。 Cache::MemoryCache系では、ハッシュへの書き込みのアトミック性によりロックは不要である。 Cache::SharedMemoryCache 系では、バックエンドのIPC::ShareLiteロック処理を使用している(Cache::CacheREADME 参照)。

ということで Cache::Cache を利用する側は get/setのために自前でロックをする必要無し。

有効期限

デフォルトでは無期限である。 キャッシュ作成 (new) 時に default_expires_in オプションで変更することができる。

またデータのキャッシュ時 (set) 時に個別に指定することもできる。

有効期限は次の get 時にチェックされる。 キャッシュをスキャンし、有効期限切れのオブジェクトを削除するには Purge() / purge() を使用する。auto_purge_interval、auto_purge_on_set、auto_purge_on_get を使用することで、一定期間毎に自動的に削除させるようにすることもできる。

Cache::Cache を使用しているモジュール。

等で利用されている。

関連情報

スポンサード リンク

2005年10月29日 (土)

他の Web サイトの情報を URI::Fetchキャッシュ付き取得

WiKickerDiKicker でうまく他のサイトの情報を取り込んで利用できるようにしたい。 相手サイト・自サイトともに負荷をかけないように処理するには、うまくキャッシングする必要がある。

キャッシュ機能のあるPerlHTTPユーザエージェントには

などがある。

WWW::Mechanize::Cached 1.32

WWW::Mechanize::Cached は1度取得したレスポンスを無条件に1日間キャッシュする。 WWW::Mechanize のサブクラスで、便利な機能が利用できるが、キャッシュは適当。

キャッシュCache::FileCache決め打ち。

LWP::UserAgent::WithCache 0.03

LWP::UserAgentのサブクラス。 Expires、Last-Modified、Etag ヘッダを考慮して処理する。

キャッシュCache::FileCache決め打ち。

URI::Fetch 0.04

fetch サブルーチンのみを提供するシンプルなモジュール。

キャッシュは Cache 系APIのモジュールを指定する。実際には Cache::Cache 系でもOK。 Last-Modified、Etag を考慮して処理する。

前回のアクセスから一定時間はキャッシュを返すようにする機能があり、RSS や Atom フィードを取得して利用するのに便利。

今回は

URI::Fetch をチョイス。 our を使っているのでそのままでは Perl 5.005_03 では動かないが、use vars に書き換えれば問題なく動く。

スポンサード リンク
[ 10月29日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.052425s / load averages: 0.34, 0.46, 0.47
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker