MDL-34401 Replace ad-hoc plugin request caches with proper application caches
authorDavid Mudrák <david@moodle.com>
Tue, 12 Feb 2013 17:24:56 +0000 (18:24 +0100)
committerDavid Mudrák <david@moodle.com>
Mon, 11 Mar 2013 11:48:53 +0000 (12:48 +0100)
Data cached in these caches change only at well defined places (during
need for upgrade checks, at the plugin management screen etc). So it
makes sense to use proper application caches instead of request caches.

This saves couple of database queries at almost every page in Moodle.

admin/blocks.php
admin/filters.php
admin/modules.php
admin/portfolio.php
admin/repository.php
filter/manage.php
lib/db/caches.php
lib/moodlelib.php
lib/pluginlib.php
user/portfolio.php
version.php

index 5b5c3a1..f2017b9 100644 (file)
@@ -30,6 +30,9 @@
     $strprotect = get_string('blockprotect', 'admin');
     $strunprotect = get_string('blockunprotect', 'admin');
 
+    // Purge all caches related to blocks administration.
+    cache::make('core', 'plugininfo_block')->purge();
+
 /// If data submitted, then process and store.
 
     if (!empty($hide) && confirm_sesskey()) {
index 0dbb415..6c58504 100644 (file)
@@ -44,6 +44,9 @@
     $returnurl = "$CFG->wwwroot/$CFG->admin/filters.php";
     admin_externalpage_setup('managefilters');
 
+    // Purge all caches related to filter administration.
+    cache::make('core', 'plugininfo_filter')->purge();
+
     $filters = filter_get_global_states();
 
     // In case any new filters have been installed, but not put in the table yet.
index 3ad0a72..33d2fbb 100644 (file)
@@ -29,6 +29,9 @@
     $stractivitymodule = get_string("activitymodule");
     $strshowmodulecourse = get_string('showmodulecourse');
 
+    // Purge all caches related to activity modules administration.
+    cache::make('core', 'plugininfo_mod')->purge();
+
 /// If data submitted, then process and store.
 
     if (!empty($hide) and confirm_sesskey()) {
index 16aa661..1811f5f 100644 (file)
@@ -43,6 +43,9 @@ $configstr  = get_string('manageportfolios', 'portfolio');
 
 $return = true; // direct back to the main page
 
+// Purge all caches related to portfolio administration.
+cache::make('core', 'plugininfo_portfolio')->purge();
+
 /**
  * Helper function that generates a moodle_url object
  * relevant to the portfolio
index a4cdd22..26f1ba4 100644 (file)
@@ -61,6 +61,9 @@ if (!empty($action)) {
     require_sesskey();
 }
 
+// Purge all caches related to repositories administration.
+cache::make('core', 'plugininfo_repository')->purge();
+
 /**
  * Helper function that generates a moodle_url object
  * relevant to the repository
index 89ba5ca..0bea014 100644 (file)
@@ -36,6 +36,9 @@ require_login($course, false, $cm);
 require_capability('moodle/filter:manage', $context);
 $PAGE->set_context($context);
 
+// Purge all caches related to filter administration.
+cache::make('core', 'plugininfo_filter')->purge();
+
 $args = array('contextid'=>$contextid);
 $baseurl = new moodle_url('/filter/manage.php', $args);
 if (!empty($forfilter)) {
index 9ba6f5a..795342d 100644 (file)
@@ -136,4 +136,59 @@ $definitions = array(
         'persistent' => true,
         'persistentmaxsize' => 2,
     ),
+
+    // Cache used by the {@link plugininfo_base} class.
+    'plugininfo_base' => array(
+        'mode' => cache_store::MODE_APPLICATION,
+        'simplekeys' => true,
+        'simpledata' => true,
+        'persistent' => true,
+        'persistentmaxsize' => 2,
+    ),
+
+    // Cache used by the {@link plugininfo_mod} class.
+    'plugininfo_mod' => array(
+        'mode' => cache_store::MODE_APPLICATION,
+        'simplekeys' => true,
+        'simpledata' => true,
+        'persistent' => true,
+        'persistentmaxsize' => 1,
+    ),
+
+    // Cache used by the {@link plugininfo_block} class.
+    'plugininfo_block' => array(
+        'mode' => cache_store::MODE_APPLICATION,
+        'simplekeys' => true,
+        'simpledata' => true,
+        'persistent' => true,
+        'persistentmaxsize' => 1,
+    ),
+
+    // Cache used by the {@link plugininfo_filter} class.
+    'plugininfo_filter' => array(
+        'mode' => cache_store::MODE_APPLICATION,
+        'simplekeys' => true,
+        'simpledata' => true,
+        'persistent' => true,
+        'persistentmaxsize' => 1,
+    ),
+
+    // Cache used by the {@link plugininfo_repository} class.
+    'plugininfo_repository' => array(
+        'mode' => cache_store::MODE_APPLICATION,
+        'simplekeys' => true,
+        'simpledata' => true,
+        'persistent' => true,
+        'persistentmaxsize' => 1,
+    ),
+
+    // Cache used by the {@link plugininfo_portfolio} class.
+    'plugininfo_portfolio' => array(
+        'mode' => cache_store::MODE_APPLICATION,
+        'simplekeys' => true,
+        'simpledata' => true,
+        'persistent' => true,
+        'persistentmaxsize' => 1,
+    ),
+
 );
index 1fe0511..a53a8de 100644 (file)
@@ -9143,6 +9143,12 @@ function moodle_needs_upgrading() {
     // and new plugins can be detected.
     cache::make('core', 'plugintypes')->purge();
     cache::make('core', 'pluginlist')->purge();
+    cache::make('core', 'plugininfo_base')->purge();
+    cache::make('core', 'plugininfo_mod')->purge();
+    cache::make('core', 'plugininfo_block')->purge();
+    cache::make('core', 'plugininfo_filter')->purge();
+    cache::make('core', 'plugininfo_repository')->purge();
+    cache::make('core', 'plugininfo_portfolio')->purge();
 
     // Check the main version first.
     $version = null;
index 298b3a2..f56a5a5 100644 (file)
@@ -2479,8 +2479,7 @@ abstract class plugininfo_base {
     protected function get_version_from_config_plugins($plugin, $disablecache=false) {
         global $DB;
 
-        $cache = cache::make_from_params(cache_store::MODE_REQUEST, 'core_plugin', 'plugininfo_base',
-            array(), array('simplekeys' => true, 'simpledata' => true));
+        $cache = cache::make('core', 'plugininfo_base');
 
         $pluginversions = $cache->get('versions_db');
 
@@ -2641,8 +2640,7 @@ class plugininfo_block extends plugininfo_base {
     protected static function get_blocks_info($disablecache=false) {
         global $DB;
 
-        $cache = cache::make_from_params(cache_store::MODE_REQUEST, 'core_plugin', 'plugininfo_block',
-            array(), array('simplekeys' => true, 'simpledata' => true));
+        $cache = cache::make('core', 'plugininfo_block');
 
         $blocktypes = $cache->get('blocktypes');
 
@@ -2786,8 +2784,7 @@ class plugininfo_filter extends plugininfo_base {
     protected static function get_global_states($disablecache=false) {
         global $DB;
 
-        $cache = cache::make_from_params(cache_store::MODE_REQUEST, 'core_plugin', 'plugininfo_filter',
-            array(), array('simplekeys' => true, 'simpledata' => true));
+        $cache = cache::make('core', 'plugininfo_filter');
 
         $globalstates = $cache->get('globalstates');
 
@@ -2958,8 +2955,7 @@ class plugininfo_mod extends plugininfo_base {
     protected static function get_modules_info($disablecache=false) {
         global $DB;
 
-        $cache = cache::make_from_params(cache_store::MODE_REQUEST, 'core_plugin', 'plugininfo_mod',
-            array(), array('simplekeys' => true, 'simpledata' => true));
+        $cache = cache::make('core', 'plugininfo_mod');
 
         $modulesinfo = $cache->get('modulesinfo');
 
@@ -3220,8 +3216,7 @@ class plugininfo_repository extends plugininfo_base {
     protected static function get_enabled_repositories($disablecache=false) {
         global $DB;
 
-        $cache = cache::make_from_params(cache_store::MODE_REQUEST, 'core_plugin', 'plugininfo_repository',
-            array(), array('simplekeys' => true, 'simpledata' => true));
+        $cache = cache::make('core', 'plugininfo_repository');
 
         $enabled = $cache->get('enabled');
 
@@ -3259,8 +3254,7 @@ class plugininfo_portfolio extends plugininfo_base {
     protected static function get_enabled_portfolios($disablecache=false) {
         global $DB;
 
-        $cache = cache::make_from_params(cache_store::MODE_REQUEST, 'core_plugin', 'plugininfo_portfolio',
-            array(), array('simplekeys' => true, 'simpledata' => true));
+        $cache = cache::make('core', 'plugininfo_portfolio');
 
         $enabled = $cache->get('enabled');
 
index 653131e..a84935c 100644 (file)
@@ -57,6 +57,9 @@ $display = true; // set this to false in the conditions to stop processing
 
 require_login($course, false);
 
+// Purge all caches related to portfolio administration.
+cache::make('core', 'plugininfo_portfolio')->purge();
+
 $PAGE->set_url($url);
 $PAGE->set_context(context_user::instance($user->id));
 $PAGE->set_title("$course->fullname: $fullname: $strportfolios");
index 9682890..5a61b9c 100644 (file)
@@ -29,7 +29,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2013030800.02;              // YYYYMMDD      = weekly release date of this DEV branch
+$version  = 2013030800.03;              // YYYYMMDD      = weekly release date of this DEV branch
                                         //         RR    = release increments - 00 in DEV branches
                                         //           .XX = incremental changes