The {eac}Doojigger Object Cache ({eac}ObjectCache) is a light-weight and very efficient drop-in persistent object cache that uses a fast SQLite database to cache WordPress objects.
See The WordPress Object Cache
The WordPress Object Cache is used to save on trips to the database. The Object Cache stores all of the cache data to memory and makes the cache contents available by using a key, which is used to name and later retrieve the cache contents.
By default, the object cache is non-persistent. This means that data stored in the cache resides in memory only and only for the duration of the request. Cached data will not be stored persistently across page loads unless you install a persistent caching plugin.
Here, an object is any piece of data – a number, text, a set of database records, an API response, etc. – that can be referenced by a name or key. Objects are categorized by a group name. Groups help identify what an object is and how it is used.
{eac}ObjectCache replaces the default WordPress object cache to not only store data in memory but to also store data persistently, across requests, in a SQLite database, increasing the likelihood of cache hits and decreasing the need for costly computations, complex MySQL database queries, and remote API requests.
SQLite is a fast, small, single-file relational database engine. By using SQLite to store objects, {eac}ObjectCache is able to manage a relatively large amount of data (groups, keys, and values) in a very efficient and fast data-store.
Several cache settings can be modified by adding defined constants to the wp-config.php file. The default settings are recommended and optimal in most cases but individual settings may need to be adjusted based on traffic volume, specific requirements, or unique circumstances.
To set the location of the SQLite database (default: ../wp-content/cache):
define( 'EAC_OBJECT_CACHE_DIR', '/full/path/to/folder' );
This folder can be outside of the web-accessable folders of your site – i.e. above the document root (htdocs, www, etc.) – provided that PHP can access (read/write) the folder (see the PHP open_basedir directive).
This folder should not be on a network share or other remote media. We’re caching data for quick access, the cache folder should be on fast, local media.
To set the name of the SQLite database (default: ‘.eac_object_cache.sqlite’):
define( 'EAC_OBJECT_CACHE_FILE', 'filename.sqlite' );
In addition to the database file, SQLite may also create temporary files using the same file name with a ‘-shm’ and ‘-wal’ suffix.
To set SQLite journal mode (default: ‘WAL’):
define( 'EAC_OBJECT_CACHE_JOURNAL_MODE', journal_mode )
journal_mode can be one of ‘DELETE’, ‘TRUNCATE’, ‘PERSIST’, ‘MEMORY’, ‘WAL’, or ‘OFF’.
See SQLite journal mode
To set SQLite timeout (default: 3):
define( 'EAC_OBJECT_CACHE_TIMEOUT', int );
Sets the number of seconds before a SQLite transaction may timeout in error:
To set SQLite retries (default: 3):
define( 'EAC_OBJECT_CACHE_RETRIES', int );
Sets the number of retries to attempt on critical actions.
To set delayed writes (default: 32):
define( 'EAC_OBJECT_CACHE_DELAYED_WRITES', true|false|int );
{eac}ObjectCache caches all objects in memory and writes new or updated objects to the L2 (SQLite) cache. delayed writes simply holds objects in memory until the number of objects reaches a specified threshold, then writes them, in a single transaction, to the L2 cache (a.k.a. write-back caching). Setting delayed writes to false turns this functionality off (a.k.a. write-through caching). Setting to true writes all records only at the end of the script process/page load. Setting this to a number sets the object pending threshold to that number of objects.
To set the default expiration time (in seconds) (default: 0 [never]):
define( 'EAC_OBJECT_CACHE_DEFAULT_EXPIRE', -1|0|int );
When using the default WordPress object cache, object expiration isn’t very important because the entire cache expires at the end of the script process/page load. With a persistent cache, this isn’t the case. When an object is cached, the developer has the option of specifying an expiration time for that object. Since we don’t know the intent of the developer when not specifying an expiration time, cache persistence may sometimes cause issues. Setting default expiration may alleviate problems and/or possibly improve performance by limiting cache data. When set to -1, objects with no expiration are not saved in the L2 cache.
* Transients with no expiration overide this setting and are allowed (as that is the normal WordPress functionality).
* More often than not, unexpired objects are updated when the source data has changed and do not present any issues.
To enable or disable pre-fetching of cache misses (default: true [enabled]):
define( 'EAC_OBJECT_CACHE_PREFETCH_MISSES', true | false );
Pre-fetching cache misses (keys that are not in the L2 persistent cache) prevents repeated, unnecessary reads of the L2 cache.
To set maintenance/sampling probability (default: 100):
define( 'EAC_OBJECT_CACHE_PROBABILITY', int );
Sets the probability of running maintenance & sampling tasks (approximately 1 in n requests).
Object groups that are global (not site-specific) in a multi-site/network environment:
define( 'EAC_OBJECT_CACHE_GLOBAL_GROUPS', [ 'groupA', 'groupB', ... ] );
Global Object groups are not tagged with or separated by the site/blog id.
* WordPress already defines several global groups that do not need to be duplicated here, rather the groups entered here are added to those defined by WordPress.
Object groups that should not be stored in the persistent cache:
define( 'EAC_OBJECT_CACHE_NON_PERSISTENT_GROUPS', [ 'groupA', 'groupB', ... ] );
Non-persistent groups are object groups that do not persist across page loads. This may be another method to alleviate issues caused by cache persistence or to improve performance by limiting cache data.
* WordPress already defines several non-persistent groups that do not need to be duplicated here, rather the groups entered here are added to those defined by WordPress.
Object groups that are allowed permanence:
define( 'EAC_OBJECT_CACHE_PERMANENT_GROUPS', [ 'groupA', 'groupB', ... ] );
When setting a default expiration (EAC_OBJECT_CACHE_DEFAULT_EXPIRE) for objects without an expiration, these groups are excluded from using the default, allowing them to be permanent (with no expiration). Transients and site-transients are automatically included.
To pre-fetch specific object groups from the L2 cache at startup:
define( 'EAC_OBJECT_CACHE_PREFETCH_GROUPS', [ 'groupA', 'groupB', ... ] );
Pre-fetching a group of records may be much faster than loading each key individually, but may load keys that are not needed, using memory unnecessarily.
Outputs an html table of current stats. Use $wp_object_cache->statsCSS to style.
$wp_object_cache->htmlStats();
Outputs an html table of current stats similar to that generated by the default WordPress object cache.
$wp_object_cache->stats();
Returns an array of current stats.
$wp_object_cache->getStats();
Returns an array of stats from the last sample saved (or current).
$wp_object_cache->getLastSample();
Delay writing to database until shutdown or n pending records (see delayed writes).
$wp_object_cache->delayed_writes = true | false | n;
Outputs an administrator notice using htmlStats().
$wp_object_cache->display_stats = true | 'current' | 'sample';
Outputs an administrator notice on error.
$wp_object_cache->display_errors = true;
Log errors to {eac}Doojigger log.
$wp_object_cache->log_errors = true;
wp_cache_add( $key, $data, $group = ”, $expire = 0 )
wp_cache_add_multiple( array $data, $group = ”, $expire = 0 )
wp_cache_replace( $key, $data, $group = ”, $expire = 0 )
wp_cache_replace_multiple( array $data, $group = ”, $expire = 0 )
wp_cache_set( $key, $data, $group = ”, $expire = 0 )
wp_cache_set_multiple( array $data, $group = ”, $expire = 0 )
wp_cache_get( $key, $group = ”, $force = false, &$found = null )
wp_cache_get_multiple( $keys, $group = ”, $force = false )
wp_cache_delete( $key, $group = ” )
wp_cache_delete_multiple( array $keys, $group = ” )
wp_cache_incr( $key, $offset = 1, $group = ” )
wp_cache_decr( $key, $offset = 1, $group = ” )
wp_cache_flush_group( $group )
wp_cache_flush_blog( $blog_id = null )
wp_cache_supports( $feature )
wp_cache_add_global_groups( $groups )
wp_cache_add_non_persistent_groups( $groups )
wp_cache_add_permanent_groups( $groups )
wp_cache_add_prefetch_groups( $groups )
wp_cache_switch_to_blog( $blog_id )
`php /* * add custom groups to pre-fetch */ if (wp_cache_supports( 'prefetch_groups' )) { wp_cache_add_prefetch_groups( [ 'ridiculous', 'absurd' ] ); } /* * calculate the sum of all digits in Pi multiplied by each known prime number... * only do this once a year (or when cache is cleared) 'cause it may take a while. */ if ( ! $result = wp_cache_get('calculation_result','ridiculous') ) { $result = do_calculation(); wp_cache_set( 'calculation_result', $result, 'ridiculous', YEAR_IN_SECONDS ); } /* * erase the 'ridiculous' group */ wp_cache_flush_group( 'ridiculous' ); /* * erase the cache for this blog only (multisite) */ if (wp_cache_supports( 'flush_blog' )) { wp_cache_flush_blog(); } `= Additional Information =
This program 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.
This program 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 receive a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Starting from $0 per month.
Rating
Reviewers
1 reviews
Tags
Developed By
Kevin Burkholder
Quick & Easy
Common Ninja has a large selection of powerful Wordpress plugins that are easy to use, fully customizable, mobile-friendly and rich with features — so be sure to check them out!
Testimonial plugins for Wordpress
Contact Form plugins for Wordpress
Maps plugins for Wordpress
Translation plugins for Wordpress
Chat plugins for Wordpress
Slider plugins for Wordpress
Reviews plugins for Wordpress
Contact plugins for Wordpress
Galleries plugins for Wordpress
SEO plugins for Wordpress
Forms plugins for Wordpress
Comments plugins for Wordpress
Backup plugins for Wordpress
Privacy plugins for Wordpress
Optimize plugins for Wordpress
Tabs plugins for Wordpress
Social Sharing plugins for Wordpress
Events Calendar plugins for Wordpress
Comments plugins for Wordpress
Social Feeds plugins for Wordpress
Social Sharing plugins for Wordpress
Portfolio plugins for Wordpress
Video Player plugins for Wordpress
popup plugins for Wordpress
SiteMap plugins for Wordpress
Payment plugins for Wordpress
Coming Soon plugins for Wordpress
Inventory plugins for Wordpress
Testimonials plugins for Wordpress
Portfolio plugins for Wordpress
Membership plugins for Wordpress
Forms plugins for Wordpress
Analytics plugins for Wordpress
Events Calendar plugins for Wordpress
Sliders plugins for Wordpress
Analytics plugins for Wordpress
Reviews plugins for Wordpress
Security plugins for Wordpress
Ads plugins for Wordpress
Music Player plugins for Wordpress
Countdown plugins for Wordpress
Email Marketing plugins for Wordpress
Membership plugins for Wordpress
Ecommerce plugins for Wordpress
Customer Support plugins for Wordpress
Video Player plugins for Wordpress
Tabs plugins for Wordpress
Social Feeds plugins for Wordpress
Common Ninja Apps
Browse our extensive collection of compatible plugins, and easily embed them on any website, blog, online store, e-commerce platform, or site builder.
Flexible Size Chart Widget with Visual Guides and Tabs
Increase conversions with a Restaurant Menu List
Create Stunning TikTok Feeds & Improve User Experience
Increase Trust & Improve Credibility To Drive Sales Up
Boost Credibility, Improve SEO & Increase Conversions
Connect instantly with visitors via our customizable Call Button
Easily List, Manage, and Customize Job Openings on Websites
Create Custom Calculators to Boost Engagement and Drive Results
Adding a Unique Charm to Your Website Images
Draw Attention to Important Information & Keep Users Up-to-Date
Easily display Medium blogs, engaging visuals, and enhanced user experience
Enhance Website Design, Increase Engagement & Add Interactivity
More plugins
The Common Ninja Search Engine platform helps website builders find the best site widgets, apps, plugins, tools, add-ons, and extensions! Compatible with all major website building platforms - big or small - and updated regularly, our Search Engine tool provides you with the business tools your site needs!