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