From 3b4065719921c2dc6f620aa5aa17d33c7d6d1c95 Mon Sep 17 00:00:00 2001 From: Dave Lawrence Date: Thu, 11 Oct 2012 18:41:57 -0400 Subject: Bug 799257 - Backport bug 795650 and bug 797833 to bmo/4.0 and bmo/4.2 for performance improvement r=glob --- Bugzilla/Template.pm | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'Bugzilla/Template.pm') diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index 245d881d3..b35a9d269 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -997,6 +997,12 @@ sub create { 'default_authorizer' => new Bugzilla::Auth(), }, }; + # Use a per-process provider to cache compiled templates in memory across + # requests. + my $provider_key = join(':', @{ $config->{INCLUDE_PATH} }); + my $shared_providers = Bugzilla->process_cache->{shared_providers} ||= {}; + $shared_providers->{$provider_key} ||= Template::Provider->new($config); + $config->{LOAD_TEMPLATES} = [ $shared_providers->{$provider_key} ]; local $Template::Config::CONTEXT = 'Bugzilla::Template::Context'; @@ -1078,6 +1084,9 @@ sub precompile_templates { # If anything created a Template object before now, clear it out. delete Bugzilla->request_cache->{template}; + # Clear out the cached Provider object + Bugzilla->process_cache->{shared_providers} = undef; + print install_string('done') . "\n" if $output; } -- cgit v1.2.3-24-g4f1b