[Koha-patches] [PATCH] Bug 6019 : Adding memoize_memcached to speed up performance

Chris Cormack chrisc at catalyst.net.nz
Thu Mar 31 04:32:38 CEST 2011


From: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>

perf enhancement Lyon3
---
 C4/Biblio.pm  |    5 ++++-
 C4/Branch.pm  |   16 ++++++++++++++++
 C4/Context.pm |   16 ++++++++++++++++
 C4/Koha.pm    |   19 ++++++++++++++++++-
 4 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index a0e06f6..93dbb5c 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -136,7 +136,10 @@ eval {
             servers    => [$servers],
             key_prefix => C4::Context->config('memcached_namespace') || 'koha',
         };
-        memoize_memcached( 'GetMarcStructure', memcached => $memcached, expire_time => 600 );    #cache for 10 minutes
+        memoize_memcached( 'GetMarcStructure', memcached => $memcached, expire_time => 60000 );    #cache for 1000 minutes
+        memoize_memcached( 'GetAuthorisedValueDesc', memcached => $memcached, expire_time => 60000 );    #cache for 1000 minutes
+        memoize_memcached( 'GetMarcFromKohaField', memcached => $memcached, expire_time => 60000 );    #cache for 1000 minutes
+        memoize_memcached( 'get_biblio_authorised_values', memcached => $memcached, expire_time => 60000 );    #cache for 1000 minutes
     }
 };
 
diff --git a/C4/Branch.pm b/C4/Branch.pm
index 1f26e35..f300ad5 100644
--- a/C4/Branch.pm
+++ b/C4/Branch.pm
@@ -24,6 +24,22 @@ use C4::Koha;
 
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 
+eval {
+    my $servers = C4::Context->config('memcached_servers');
+    if ($servers) {
+        require Memoize::Memcached;
+        import Memoize::Memcached qw(memoize_memcached);
+ 
+        my $memcached = {
+            servers    => [ $servers ],
+            key_prefix => C4::Context->config('memcached_namespace') || 'koha',
+        };
+
+        memoize_memcached('GetBranches',memcached => $memcached, expire_time => 600000);
+        memoize_memcached('GetBranchName',memcached => $memcached, expire_time => 600000);
+    }
+};
+
 BEGIN {
 	# set the version for version checking
 	$VERSION = 3.02;
diff --git a/C4/Context.pm b/C4/Context.pm
index 484d4e1..22cde8c 100644
--- a/C4/Context.pm
+++ b/C4/Context.pm
@@ -20,6 +20,22 @@ use strict;
 use warnings;
 use vars qw($VERSION $AUTOLOAD $context @context_stack);
 
+eval {
+    my $servers = C4::Context->config('memcached_servers');
+    if ($servers) {
+        require Memoize::Memcached;
+        import Memoize::Memcached qw(memoize_memcached);
+ 
+        my $memcached = {
+            servers    => [ $servers ],
+            key_prefix => C4::Context->config('memcached_namespace') || 'koha',
+        };
+
+        memoize_memcached('preference', memcached => $memcached, expire_time => 600000); #cache for 10 minutes
+        memoize_memcached('marcfromkohafield', memcached => $memcached, expire_time => 600000); #cache for 10 minutes
+    }
+};
+
 BEGIN {
 	if ($ENV{'HTTP_USER_AGENT'})	{
 		require CGI::Carp;
diff --git a/C4/Koha.pm b/C4/Koha.pm
index 0836669..7db2eb8 100644
--- a/C4/Koha.pm
+++ b/C4/Koha.pm
@@ -73,7 +73,24 @@ BEGIN {
 }
 
 # expensive functions
-memoize('GetAuthorisedValues');
+    
+eval {
+    my $servers = C4::Context->config('memcached_servers');
+    if ($servers) {
+        require Memoize::Memcached;
+        import Memoize::Memcached qw(memoize_memcached);
+ 
+        my $memcached = {
+            servers    => [ $servers ],
+            key_prefix => C4::Context->config('memcached_namespace') || 'koha',
+        };
+
+        memoize_memcached('GetKohaAuthorisedValues',memcached => $memcached, expire_time => 600000);
+        memoize_memcached('GetAuthorisedValues',memcached => $memcached, expire_time => 600000);
+        memoize_memcached('GetItemTypes',memcached => $memcached, expire_time => 600000);
+        memoize_memcached('getitemtypeimagelocation',memcached => $memcached, expire_time => 600000);
+    }
+};
 
 =head1 NAME
 
-- 
1.7.1



More information about the Koha-patches mailing list