「Tagwire」のキャッシュ化

  • 投稿日:
  • by

先日、Tagwireを導入して、Tag Cloudページを作成したのですが、
この検索機能にキャッシュを設けることができるというのを、
参照ページを読み進めていって、初めて知りました(^^;)

導入することにより、以下の効果が期待できるそうです。

・キャッシュを作成してから一定時間内は再検索しないことによる負荷の軽減 ・この期間内に二回以上アクセスするブラウザには304 Not Modifiedを返すことによる、データ転送の削減


導入は至って簡単です。

まず、Perlモジュールとして、「CGI:Cache」がサーバーに入っていない場合、
インストールします。

# perl -MCPAN -e shell > install CGI::Cache


次に、mt-xsearch.cgi」を編集します。

use CGI; use CGI::Cache; use MT; use MT::ConfigMgr; use MT::Template;

my $mt = MT->new( Config => $MT_DIR . 'mt.cfg', Directory => $MT_DIR )
or die MT->errstr;
my $q = new CGI;
CGI::Cache::setup({ cache_options => { cache_root => './cache', default_expires_in => 3600 } });
my $blog_id = $q->param('blog_id') or
die "Missing parameter blog_id";
my $key = $q->param('search_key') or
die "Missing parameter key";
CGI::Cache::set_key($q->Vars);
CGI::Cache::start() or exit;

my $search = MT::XSearch->execute($q);
my $tmpl = MT::Template->load( {
name=>'XSearch '.$key,

$ctx->stash('CGI',$q);
my $out = $tmpl->build($ctx)
or die "Building search template failed: ".$tmpl->errstr;
print $q->header.$out;
my $charset = $mt->{cfg}->PublishCharset;
my @m = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @w = qw(Sun Mon Tue Wed Thu Fri Sat);
my ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime(time);
my $now = sprintf("%3s, %02d %3s %04d %02d:%02d:%02d GMT",
$w[$wday], $mday, $m[$mon], $year+1900, $hour, $min, $sec);
print $q->header(-charset=>$charset,-Last_Modified=>$now).$out;
CGI::Cache::stop();

};
if ($@) {
print "Content-Type: text/html\n\n";


赤文字を削除し、青文字を追加します。

緑文字はご自分の環境に合わせて変更なりしてください。

ちなみに、緑文字の部分は、
キャッシュをため込むディレクトリと、リフレッシュする時間です(秒)。


早わかり 図解&実例 よくわかる!ソーシャル・ネットワーキング
山崎 秀夫 山田 政弘
ソフトバンククリエイティブ (2004/11/20)
売り上げランキング: 15,715