CaChing

merlyn on 2002-09-27T14:00:10

OK, that was easier than I thought. I added

package Stonehenge::Template::Plugin::CacheFileCache;

use Cache::FileCache;
use base qw(Template::Plugin);

sub new {
  my $class = shift;
  my $context = shift;
  Cache::FileCache->new(@_);
}

1;
to my webserver's mod_perl search path, and
TT2PluginBase Stonehenge::Template::Plugin
to my config file, and now I can say:
  USE mycache = CacheFileCache({
    namespace => 'stonehenge-nav_stacked_bars',
    default_expires_in => 1800,
    auto_purge_interval => 1800,
  });
  mykey = [class, instance, global.navbardata.modtime];
  mykey = mykey.join(":");
  result = mycache.get(mykey);
  UNLESS result;
    result = BLOCK;
      [[ stuff to compute result deleted ]]
    END;
    mycache.set(mykey, result);
    FILTER stderr; "cache miss on "; mykey; "\n"; END;
  END;
  result;
to my navbar generation template, and I've just cached the creation of my navbars (function of class, instance, and the timestamp on the navbar data).

TT2 rocks. Cache::Cache rocks. 'nuff said.


so the second codeblock goes in the template?

TeeJay on 2002-09-27T16:24:50

is that right ?

Is there an article coming on using TT and caching and filters? go on you know you want to :)

Re:so the second codeblock goes in the template?

merlyn on 2002-09-27T18:38:18

The third code block goes into the template. The second code block was a line for the httpd.conf file.