Cache::File で簡単キャッシュ

久しぶりに技術系の記事です。

Cache::FileというPerlモジュールについて書きたいと思います。
よく、以下のやりとりの場に遭遇します。


「速くするためには?」
「キャッシュを使います。」


でも、実際、いまいち分かってなかったので、
モジュールを使って今さらながらやってみました。


さらっとコード

#/usr/bin/env perl

use strict;
use LWP::Simple;
use Cache::File;
#use Data::Dumper;

my $cache = Cache::File->new(
    cache_root => "/var/tmp/data-cahce",
    default_expires => "24 hours");

sub main {
    my $url = "http://google.co.jp";
    my $content = &check_cache($url);
    print $content;
}

sub check_cache {
    my $url = shift;
    if($cache->exists($url)){
      my $content_ref = $cache->thaw($url);
      return ${$content_ref};
    }else{
      my $content = get($url);
      my $content_ref = \$content;
      $cache->freeze($url,$content_ref);
      return ${$content_ref};
    }
}

&main;

1;

かなり周りくどい事やってますが、こんな感じです。


キャッシュにある場合は、thawで引き出してきて、
キャッシュがない、有効期限が切れた場合は、freezeで保存します。
(freezeに渡すデータはリファレンスにする必要があります。)


いや、これはすごい。


ref:

Cache::File - search.cpan.org
[を] Cache::File で Storable