Class::FileCacheable::LiteなるPerlモジュールを作った

 

Class::FileCacheableです。PODです。

何にも気にせず作ったOOPスタイルのモジュールに、後から手軽にキャッシュ機構を導入できます。

package RemoteContentGetter;
use strict;
use warnings;
use base 'Class::FileCacheable::Lite';
use LWP::Simple;

    sub new {
        my ($class, $url) = @_;
        return bless {url => $url}, $class;
    }

    sub get_url : FileCacheable {
        my $self = shift;
        return LWP::Simple::get($self->{url});
    }

    sub file_cache_expire {
        my ($self, $timestamp) = @_;
        if (time() - $timestamp > 86400) {
            return 1;
        }
    }

    sub file_cache_options {
        my $self = shift;
        return {
            namespace => 'Test',
            cache_root => 't/cache',
            default_key => $self->{url},
        };
    }

やることは、

  • Cache::FileCacheable::Liteを継承する
  • 必要ならfile_cache_expireメソッドをオーバーライドし、キャッシュの失効条件を指定する。
  • 必要ならfile_cache_optionsメソッドをオーバーライドし、オプションを明示する。
  • 対象のメソッドにFileCacheableアトリビュートを付与する。

以上です。

オプション指定などはCache::FileCacheとほぼ同じです。というか、Cache::FileCacheに依存したClass::FileCacheableってのを作ったんだけど重すぎたので、ファイル操作まで自前でやる本モジュールができたのでした。っていうか、実はこのモジュールは何年も前からひそかに使っていて、すごく気に入っていたので、今回、ちゃんとテスト書いてアップしてみた次第。継承ツリーを汚さない、MixInバージョンも作りたい。

Class::FileCacheable::LiteなるPerlモジュールを作った」への1件のフィードバック

  1. ピンバック: Perl製の小悪魔テンプレートエンジン「Text::PSTemplate」- jamadam weblog2

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です