DBIx::Class::Cursor::Cachedつかってみた
すばらしすぎる。もっと早く使えばよかったとおもった。
Catalyst::Model::DBIC::Schema
で使う場合はこんな感じでOK。
sub new {
my $self = shift->NEXT::new(@_);
my $cache = Cache::FastMmap->new( share_file => $self->{cache_file} );
$self->schema->default_resultset_attributes({
cache_object => $cache,
});
$self;
}
そんで、あとはsearchのattrとして { cache_for => 300 } とかかいてやればそのクエリは300秒キャッシュされる。
実際にはsearch時ではなくてallとかnextのときにそのクエリをキャッシュしてる。
ちなみにdefault_resultset_attributes
にcache_for
を含めるとすべてのクエリがキャッシュされる。