From b037f9bf0993f519375f6dfa0c514529d48b7f23 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Tue, 7 Aug 2012 17:35:13 +0800 Subject: Bug 778631: use a persistent Template::Provider to avoid recompiling templates between page loads --- Bugzilla/Template.pm | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Bugzilla/Template.pm') diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index 245d881d3..fb6c5ad1d 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -66,6 +66,10 @@ use constant FORMAT_3_SIZE => [19,28,28]; use constant FORMAT_DOUBLE => '%19s %-55s'; use constant FORMAT_2_SIZE => [19,55]; +# Use a per-process provider to cache compiled templates in memory across +# requests. +our $shared_provider; + # Pseudo-constant. sub SAFE_URL_REGEXP { my $safe_protocols = join('|', SAFE_PROTOCOLS); @@ -617,6 +621,10 @@ sub create { COMPILE_DIR => bz_locations()->{'template_cache'}, + # Don't check for a template update until 1 hour has passed since the + # last check. + STAT_TTL => 60 * 60, + # Initialize templates (f.e. by loading plugins like Hook). PRE_PROCESS => ["global/initialize.none.tmpl"], @@ -997,6 +1005,8 @@ sub create { 'default_authorizer' => new Bugzilla::Auth(), }, }; + $shared_provider ||= Template::Provider->new($config); + $config->{LOAD_TEMPLATES} = [ $shared_provider ]; local $Template::Config::CONTEXT = 'Bugzilla::Template::Context'; -- cgit v1.2.3-24-g4f1b