Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
/lib/db/ -> caches.php (source)
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Core cache definitions.
 *
 * This file is part of Moodle's cache API, affectionately called MUC.
 * It contains the components that are requried in order to use caching.
 *
 * @package    core
 * @category   cache
 * @copyright  2012 Sam Hemelryk
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

$definitions = array(

    // Used to store processed lang files.
    // The keys used are the revision, lang and component of the string file.
    // The static acceleration size has been based upon student access of the site.
    'string' => array(
        'mode' => cache_store::MODE_APPLICATION,
        'simplekeys' => true,
        'simpledata' => true,
        'staticacceleration' => true,
        'staticaccelerationsize' => 30,
        'canuselocalstore' => true,
    ),

    // Used to store cache of all available translations.
    'langmenu' => array(
        'mode' => cache_store::MODE_APPLICATION,
        'simplekeys' => true,
        'simpledata' => true,
        'staticacceleration' => true,
        'canuselocalstore' => true,
    ),

    // Used to store database meta information.
    // The database meta information includes information about tables and there columns.
    // Its keys are the table names.
    // When creating an instance of this definition you must provide the database family that is being used.
    'databasemeta' => array(
        'mode' => cache_store::MODE_APPLICATION,
        'requireidentifiers' => array(
            'dbfamily'
        ),
        'simpledata' => true, // This is a read only class, so leaving references in place is safe.
        'staticacceleration' => true,
        'staticaccelerationsize' => 15
    ),

    // Event invalidation cache.
    // This cache is used to manage event invalidation, its keys are the event names.
    // Whenever something is invalidated it is both purged immediately and an event record created with the timestamp.
    // When a new cache is initialised all timestamps are looked at and if past data is once more invalidated.
    // Data guarantee is required in order to ensure invalidation always occurs.
    // Persistence has been turned on as normally events are used for frequently used caches and this event invalidation
    // cache will likely be used either lots or never.
    'eventinvalidation' => array(
        'mode' => cache_store::MODE_APPLICATION,
        'staticacceleration' => true,
        'requiredataguarantee' => true,
        'simpledata' => true,
    ),

> // Hook callbacks cache. // Cache for question definitions. This is used by the question_bank class. > // There is a static cache in hook manager, data is fetched once per page on first hook execution. // Users probably do not need to know about this cache. They will just call > // This cache needs to be invalidated during upgrades when code changes and when callbacks // question_bank::load_question. > // overrides are updated. 'questiondata' => array( > 'hookcallbacks' => array( 'mode' => cache_store::MODE_APPLICATION, > 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, // The id of the question is used. > 'simplekeys' => true, 'requiredataguarantee' => false, > 'simpledata' => true, 'datasource' => 'question_finder', > 'staticacceleration' => false, 'datasourcefile' => 'question/engine/bank.php', > // WARNING: Manual cache purge may be required when overriding hook callbacks. ), > 'canuselocalstore' => true, > ), // HTML Purifier cache >
// This caches the html purifier cleaned text. This is done because the text is usually cleaned once for every user // and context combo. Text caching handles caching for the combination, this cache is responsible for caching the // cleaned text which is shareable. 'htmlpurifier' => array( 'mode' => cache_store::MODE_APPLICATION, 'canuselocalstore' => true, ), // Used to store data from the config + config_plugins table in the database. // The key used is the component: // - core for all core config settings // - plugin component for all plugin settings. // Persistence is used because normally several settings within a script. 'config' => array( 'mode' => cache_store::MODE_APPLICATION, 'staticacceleration' => true, 'simpledata' => true ), // Groupings belonging to a course. // A simple cache designed to replace $GROUPLIB_CACHE->groupings. // Items are organised by course id and are essentially course records. 'groupdata' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, // The course id the groupings exist for. 'simpledata' => true, // Array of stdClass objects containing only strings. 'staticacceleration' => true, // Likely there will be a couple of calls to this. 'staticaccelerationsize' => 2, // The original cache used 1, we've increased that to two. ),
> // Whether a course currently has hidden groups. // Used to cache calendar subscriptions. > 'coursehiddengroups' => array( 'calendar_subscriptions' => array( > 'mode' => cache_store::MODE_APPLICATION, 'mode' => cache_store::MODE_APPLICATION, > 'simplekeys' => true, // The course id the groupings exist for. 'simplekeys' => true, > 'simpledata' => true, // Booleans. 'simpledata' => true, > 'staticacceleration' => true, // Likely there will be a couple of calls to this. 'staticacceleration' => true, > ), ), >
// Cache the course categories where the user has any enrolment and all categories that this user can manage. 'calendar_categories' => array( 'mode' => cache_store::MODE_SESSION, 'simplekeys' => true, 'simpledata' => true, 'invalidationevents' => array( 'changesincoursecat', 'changesincategoryenrolment', ), 'ttl' => 900, ),
< // Cache the capabilities list DB table. See get_all_capabilities in accesslib.
> // Cache the capabilities list DB table. See get_all_capabilities and get_deprecated_capability_info in accesslib.
'capabilities' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true,
< 'staticaccelerationsize' => 1,
> 'staticaccelerationsize' => 2, // Should be main capabilities and deprecated capabilities.
'ttl' => 3600, // Just in case. ), // YUI Module cache. // This stores the YUI module metadata for Shifted YUI modules in Moodle. 'yuimodules' => array( 'mode' => cache_store::MODE_APPLICATION, ), // Cache for the list of event observers. 'observers' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 2, ), // Cache used by the {@link core_plugin_manager} class. // NOTE: this must be a shared cache. 'plugin_manager' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, ), // Used to store the full tree of course categories. 'coursecattree' => array( 'mode' => cache_store::MODE_APPLICATION, 'staticacceleration' => true, 'invalidationevents' => array( 'changesincoursecat', ) ), // Used to store data for course categories visible to current user. Helps to browse list of categories. 'coursecat' => array( 'mode' => cache_store::MODE_SESSION, 'invalidationevents' => array( 'changesincoursecat', 'changesincourse', ), 'ttl' => 600, ), // Used to store data for course categories visible to current user. Helps to browse list of categories. 'coursecatrecords' => array( 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'invalidationevents' => array( 'changesincoursecat', ), ),
> // Used to store state of sections in course (collapsed or not). // Cache course contacts for the courses. > 'coursesectionspreferences' => [ 'coursecontacts' => array( > 'mode' => cache_store::MODE_REQUEST, 'mode' => cache_store::MODE_APPLICATION, > 'simplekeys' => true, 'staticacceleration' => true, > 'simpledata' => false, 'simplekeys' => true, > 'staticacceleration' => true, 'ttl' => 3600, > ],
),
> // Course reactive state cache. // Used to store data for repositories to avoid repetitive DB queries within one request. > 'courseeditorstate' => [ 'repositories' => array( > 'mode' => cache_store::MODE_SESSION, 'mode' => cache_store::MODE_REQUEST, > 'simplekeys' => true, ), > 'simpledata' => true, // Used to store external badges. > ],
'externalbadges' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'ttl' => 3600, ),
< // Accumulated information about course modules and sections used to print course view page (user-independed). < // Used in function get_fast_modinfo(), reset in function rebuild_course_cache().
> // Accumulated information about course modules and sections used to print course view page (user-independent). > // Used in functions: > // - course_modinfo::build_course_section_cache() > // - course_modinfo::inner_build_course_cache() > // - get_array_of_activities() > // Reset/update in functions: > // - rebuild_course_cache() > // - course_modinfo::purge_module_cache() > // - course_modinfo::purge_section_cache() > // - remove_course_contents().
'coursemodinfo' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'canuselocalstore' => true,
> 'requirelockingbeforewrite' => true
), // This is the session user selections cache. // It's a special cache that is used to record user selections that should persist for the lifetime of the session. // Things such as which categories the user has expanded can be stored here. // It uses simple keys and simple data, please ensure all uses conform to those two constraints. 'userselections' => array( 'mode' => cache_store::MODE_SESSION, 'simplekeys' => true, 'simpledata' => true ), // Used to cache activity completion status. 'completion' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'ttl' => 3600, 'staticacceleration' => true, 'staticaccelerationsize' => 2, // Should be current course and site course. ), // Used to cache course completion status. 'coursecompletion' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'ttl' => 3600, 'staticacceleration' => true, 'staticaccelerationsize' => 30, // Will be users list of current courses in nav. ), // A simple cache that stores whether a user can expand a course in the navigation. // The key is the course ID and the value will either be 1 or 0 (cast to bool). // The cache isn't always up to date, it should only ever be used to save a costly call to // can_access_course on the first page request a user makes. 'navigation_expandcourse' => array( 'mode' => cache_store::MODE_SESSION, 'simplekeys' => true, 'simpledata' => true ), // Caches suspended userids by course. // The key is the courseid, the value is an array of user ids. 'suspended_userids' => array( 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'simpledata' => true, ), // Cache system-wide role definitions. 'roledefs' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 30, ), // Caches plugins existing functions by function name and file. // Set static acceleration size to 5 to load a few functions. 'plugin_functions' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true,
> 'canuselocalstore' => true,
'staticacceleration' => true, 'staticaccelerationsize' => 5 ), // Caches data about tag collections and areas. 'tags' => array( 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'staticacceleration' => true, ), // Grade categories. Stored at session level as invalidation is very aggressive. 'grade_categories' => array( 'mode' => cache_store::MODE_SESSION, 'simplekeys' => true, 'invalidationevents' => array( 'changesingradecategories', ) ), // Store temporary tables information. 'temp_tables' => array( 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'simpledata' => true ), // Caches tag index builder results. 'tagindexbuilder' => array( 'mode' => cache_store::MODE_SESSION, 'simplekeys' => true, 'simplevalues' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 10, 'ttl' => 900, // 15 minutes. 'invalidationevents' => array( 'resettagindexbuilder', ), ), // Caches contexts with insights. 'contextwithinsights' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 1 ), // Caches message processors. 'message_processors_enabled' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 3 ), // Caches the time of the last message in a conversation. 'message_time_last_message_between_users' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, // The conversation id is used. 'simplevalues' => true, 'datasource' => '\core_message\time_last_message_between_users', ), // Caches font awesome icons. 'fontawesomeiconmapping' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 1 ), // Caches processed CSS. 'postprocessedcss' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => false, ), // Caches grouping and group ids of a user. 'user_group_groupings' => array( 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, ), // This is the user's pre sign-up session cache. // This cache is used to record the user's pre sign-up data such as // age of digital consent (minor) status, accepted policies, etc. 'presignup' => array( 'mode' => cache_store::MODE_SESSION, 'simplekeys' => true, 'simpledata' => true, 'ttl' => 1800 ), // Caches the first time we analysed models' analysables. 'modelfirstanalyses' => array( 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'simpledata' => true, ), // Cache the list of portfolio instances for the logged in user // in the portfolio_add_button constructor to avoid loading the // same data multiple times. 'portfolio_add_button_portfolio_instances' => [ 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'staticacceleration' => true ], // Cache the user dates for courses set to relative dates mode. 'course_user_dates' => [ 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true ], // Information generated during the calculation of indicators. 'calculablesinfo' => [ 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => false, 'simpledata' => false, ], // The list of content items (activities, resources and their subtypes) that can be added to a course for a user. 'user_course_content_items' => [ 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, ], // The list of favourited content items (activities, resources and their subtypes) for a user. 'user_favourite_course_content_items' => [ 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, ], \core_course\local\service\content_item_service::RECOMMENDATION_CACHE => [ 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, ], // Caches contentbank extensions management. 'contentbank_enabled_extensions' => [ 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, ], 'contentbank_context_extensions' => [ 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'simpledata' => true, 'staticacceleration' => true, ], // Language strings for H5P content-type libraries. // Key "{$libraryname}/{$language}"" contains translations for a given library and language. // Key "$libraryname" has a list of all of the available languages for the library. 'h5p_content_type_translations' => [ 'mode' => cache_store::MODE_APPLICATION, 'simpledata' => true, ],
> // File cache for H5P Library ids. // File cache for H5P Library files. > 'h5p_libraries' => [ 'h5p_library_files' => [ > 'mode' => cache_store::MODE_APPLICATION, 'mode' => cache_store::MODE_APPLICATION, > 'simplekeys' => true, 'simplekeys' => true, > 'canuselocalstore' => true 'canuselocalstore' => true > ], ], >
// Cache the grade letters for faster retrival. 'grade_letters' => [ 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 100 ], // Cache for licenses. 'license' => [ 'mode' => cache_store::MODE_APPLICATION, 'simplekeys' => true, 'simpledata' => false, ], // Cache the grade setting for faster retrieval. 'gradesetting' => [ 'mode' => cache_store::MODE_REQUEST, 'simplekeys' => true, 'staticacceleration' => true, 'staticaccelerationsize' => 100
> ], ], > ); > // Course image cache. > 'course_image' => [ > 'mode' => cache_store::MODE_APPLICATION, > 'simplekeys' => true, > 'simpledata' => true, > 'staticacceleration' => true, > 'datasource' => '\core_course\cache\course_image', > ], > > // Cache the course categories where the user has access the content bank. > 'contentbank_allowed_categories' => [ > 'mode' => cache_store::MODE_SESSION, > 'simplekeys' => true, > 'simpledata' => true, > 'invalidationevents' => [ > 'changesincoursecat', > 'changesincategoryenrolment', > ], > ], > > // Cache the courses where the user has access the content bank. > 'contentbank_allowed_courses' => [ > 'mode' => cache_store::MODE_SESSION, > 'simplekeys' => true, > 'simpledata' => true, > 'invalidationevents' => [ > 'changesincoursecat', > 'changesincategoryenrolment', > 'changesincourse', > ], > ], > > // Users allowed reports according to audience. > 'reportbuilder_allowed_reports' => [ > 'mode' => cache_store::MODE_APPLICATION, > 'simplekeys' => true, > 'simpledata' => true, > 'staticacceleration' => true, > 'ttl' => 1800, > ], > > // Cache image dimensions. > 'file_imageinfo' => [ > 'mode' => cache_store::MODE_APPLICATION, > 'simplekeys' => true, > 'simpledata' => true, > 'staticacceleration' => true, > 'canuselocalstore' => true, > 'staticaccelerationsize' => 100, > ], > > // Cache if a user has the capability to share to MoodleNet. > 'moodlenet_usercanshare' => [ > 'mode' => cache_store::MODE_SESSION, > 'simplekeys' => true, > 'simpledata' => true, > 'ttl' => 1800, > 'invalidationevents' => [ > 'changesincoursecat', > 'changesincategoryenrolment', > 'changesincourse', > ],