use Carp qw(confess cluck);
use Config ();
-our $VERSION = "1.007";
+our $VERSION = "1.008";
sub templater {
my ($class, $cfg, $rsets) = @_;
require BSE::Cache;
$opts{cache} = BSE::Cache->load($cfg);
}
+ if ($cfg->entry("basic", "cache_templates_locally")) {
+ $opts{cache_locally} = 1;
+ }
$opts{preload} = $cfg->entry("basic", "preload_template");
use constant DEBUG_GET_PARMS => 0;
-our $VERSION = "1.020";
+our $VERSION = "1.021";
+
+my %compile_cache;
my $tag_head = qr/(?:\s+<:-|<:-?)/;
my $tag_tail = qr/(?:-:>\s*|:>)/;
my $key = "Squirrel::Template::file:$filename";
my ($date, $size);
+ if ($self->{cache_locally}) {
+ ($date, $size) = (stat $filename)[9, 7]
+ unless $date;
+
+ my $cached = $compile_cache{$filename};
+ if ($cached) {
+ if ($cached->[0] == $date && $cached->[1] == $size) {
+ #print STDERR "Found cached $filename / $date / $size\n";
+ return $cached->[2];
+ }
+ else {
+ #print STDERR "Cached but old $filename / $date / $size\n";
+ delete $compile_cache{$filename};
+ }
+ }
+ }
+
if ($self->{cache}) {
- ($date, $size) = (stat $filename)[9, 7];
+ ($date, $size) = (stat $filename)[9, 7]
+ unless $date;
my $cached = $self->{cache}->get($key);
if ($cached) {
$self->{cache}->set($key => [ $date, $size, $parsed ]);
}
+ if ($parsed && $self->{cache_locally}) {
+ $compile_cache{$filename} = [ $date, $size, $parsed ];
+ }
+
return ($parsed, $message);
}
}
cache, if any. Depending on the configured cache this may slow things
down. Default: disabled.
+=item cache_templates_locally
+
+If true, BSE will cache compiled templates in memory. This may
+significantly improve performance but may increase memory use.
+Default: disabled.
+
=item preload_template
Preload the named template, searching the template search part. Any