Hatena::ブログ(Diary)

s_nobuの日記

- 気になる情報と使用しているツールと自分のための備忘録 - この日記のはてなブックマーク数

2006-06-19

[]EntryFullTextのキャッシュを自動削除#2

めざせchangeset/1000ということで、ここで公開したEntryFullTextのキャッシュを自動削除するパッチを更新して見ました。以前のパッチではpurgeが頻繁に発生し、キャッシュが増える以上に負荷が酷かったと思います。

そこでpurgeするタイミング(確率)を指定できるようにしてみました。


タイミング(確率)といっても、time % probabirity == 0な場合ですので過度な期待は禁物ですが、購読しているFeedの数が多くて、キャッシュサイズが気になる人には有用だと思います。いつかは削除されますので。

ちなみに、Ticket#306に別方法で登録されていますので、それまでのつなぎです。

 Index: svn/plagger/lib/Plagger/Cache.pm
 ===================================================================
 --- svn/plagger/lib/Plagger/Cache.pm    (リビジョン 941)
 +++ svn/plagger/lib/Plagger/Cache.pm    (作業コピー)
 @@ -14,6 +14,7 @@
      $conf->{class}  ||= 'Cache::FileCache';
      $conf->{params} ||= {
          cache_root => File::Spec->catfile($conf->{base}, 'cache'),
 +        default_expires_in => $conf->{expires} || 'never',
      };

      $conf->{class}->require;
 @@ -28,6 +29,7 @@
      my $self = bless {
          base  => $conf->{base},
          cache => $conf->{class}->new($conf->{params}),
 +        probabirity => $conf->{probabirity} || 100,
      }, $class;
  }

 @@ -55,6 +57,10 @@

      my $hit_miss = defined $value ? "HIT" : "MISS";
      Plagger->context->log(debug => "Cache $hit_miss: $_[0]");
 +    if (time % $self->{probabirity} == 0) {
 +        $self->{cache}->purge();
 +        Plagger->context->log(info => "Cache purge");
 +    }

      $value;
  }

設定は以下の通り

 global:
   cache:
     expires: 604800
     probabirity: 100

上記の設定では、1週間(expires:604800=60*60*24*7)経ったキャッシュを削除登録し、100回キャッシュを検索(probabirity:100=1%)したときに、1度削除登録されたキャッシュを削除します。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/s_nobu/20060619/1150709563

Firefox以外では意図した通りにレイアウトされませんがご了承ください。
アイコンはFAMFAMFAMのものを使用しています。
RSS feed meter for http://d.hatena.ne.jp/s_nobu/ 忍者TOOLS