]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 778631: use a persistent Template::Provider to avoid recompiling templates betwee...
authorByron Jones <bjones@mozilla.com>
Tue, 7 Aug 2012 09:31:06 +0000 (17:31 +0800)
committerByron Jones <bjones@mozilla.com>
Tue, 7 Aug 2012 09:31:06 +0000 (17:31 +0800)
r=dkl, a=LpSolit

Bugzilla/Template.pm

index 87c8696b7461308edbdb0a356bdbeb7a827a6f26..4bc2c32e6332df6ab223f1cd281611c94bff23ad 100644 (file)
@@ -40,6 +40,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);
@@ -603,6 +607,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/variables.none.tmpl"],
 
@@ -973,6 +981,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';