{"id":3551,"date":"2025-02-15T11:55:20","date_gmt":"2025-02-15T11:55:20","guid":{"rendered":"https:\/\/s-o-s.net\/sqlite-object-cache\/"},"modified":"2025-02-15T11:55:20","modified_gmt":"2025-02-15T11:55:20","slug":"sqlite-object-cache","status":"publish","type":"post","link":"http:\/\/s-o-s.net\/en_gb\/sqlite-object-cache\/","title":{"rendered":"SQLite Object Cache"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<article id=\"post-165801\" class=\"alignwide post-165801 plugin type-plugin status-publish hentry plugin_tags-cache plugin_tags-object-cache plugin_tags-performance plugin_tags-sqlite plugin_category-performance plugin_category-security-and-spam-protection plugin_contributors-olliejones plugin_business_model-community plugin_committers-olliejones\">\n<div class=\"plugin-banner\" id=\"plugin-banner-sqlite-object-cache\"><\/div>\n<header class=\"plugin-header\">\n<div class=\"entry-heading-container\">\n<div>\n<div class=\"entry-thumbnail\">\n\t\t\t\t\t<img decoding=\"async\" class=\"plugin-icon\" src=\"https:\/\/ps.w.org\/sqlite-object-cache\/assets\/icon-128x128.jpg?rev=2829632\" alt=\"\">\t\t\t\t<\/div>\n<div>\n<h1 class=\"plugin-title\">SQLite Object Cache<\/h1>\n<p>\t\t\t\t\t<span class=\"byline\">By <span class=\"author vcard\"><a target=\"_blank\" class=\"url fn n\" href=\"https:\/\/profiles.wordpress.org\/olliejones\/\" rel=\"noopener\">OllieJones<\/a><\/span><\/span>\n\t\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"plugin-actions\">\n<div class=\"wp-block-button is-small plugin-download download-button\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/downloads.wordpress.org\/plugin\/sqlite-object-cache.1.4.1.zip\" rel=\"noopener\">Download<\/a><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/header>\n<p><!-- .entry-header --><\/p>\n<p>\t<span id=\"description\"><\/span><br \/>\n\t<span id=\"reviews\"><\/span><br \/>\n\t<span id=\"installation\"><\/span><br \/>\n\t<span id=\"developers\"><\/span><br \/>\n\t<span id=\"advanced\" class=\"\"><\/span><br \/>\n\t<span id=\"section-links\"><\/p>\n<ul class=\"tabs clear\">\n<li id=\"tablink-description\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/sqlite-object-cache\/#description\" rel=\"noopener\">Details<\/a><\/li>\n<li id=\"tablink-reviews\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/sqlite-object-cache\/#reviews\" rel=\"noopener\">Reviews<\/a><\/li>\n<li id=\"tablink-installation\">\n\t\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/sqlite-object-cache\/#installation\" rel=\"noopener\">Installation<\/a>\n\t\t\t<\/li>\n<li id=\"tablink-developers\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/sqlite-object-cache\/#developers\" rel=\"noopener\">Development<\/a><\/li>\n<\/ul>\n<div id=\"link-support\">\n\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/sqlite-object-cache\/\" rel=\"noopener\">Support<\/a>\n\t\t<\/div>\n<p>\t<\/span><br \/>\n\t<script type=\"text\/javascript\">if ( '#changelog' == window.location.hash ) { window.setTimeout( function() { window.location.hash=\"#developers\"; }, 10 ); }<\/script><\/p>\n<div class=\"entry-content\">\n<div id=\"tab-description\" class=\"plugin-description section\">\n<h2 id=\"description-header\">Description<\/h2>\n<p>A <a target=\"_blank\" href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_object_cache\/#persistent-cache-plugins\" rel=\"nofollow ugc noopener\">persistent object cache<\/a> helps your site perform well. This one uses the widely available <a target=\"_blank\" href=\"https:\/\/www.php.net\/manual\/en\/book.sqlite3.php\" rel=\"nofollow ugc noopener\">SQLite3<\/a> extension to php. Many hosting services offer that extension, and it is easy to install on a server you control.<\/p>\n<h4>What is this about?<\/h4>\n<p>It\u2019s about making your site perform better. An object cache does that by reducing the workload on your MariaDB or MySQL database. This is not a <a target=\"_blank\" href=\"https:\/\/developer.wordpress.org\/advanced-administration\/performance\/cache\/\" rel=\"nofollow ugc noopener\">page cache<\/a>; these persistent objects are cached in a different kind of cache. These objects aren\u2019t chunks of HTML ready for people to view, they are data objects for use by the WordPress software.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cache_(computing)\" rel=\"nofollow ugc noopener\">Caches<\/a> are ubiquitous in computing, and WordPress has its own caching subsystem. Caches contain short-term copies of the results of expensive database lookups or computations, and allow software to use the copy rather than repeating the expensive operation. This plugin (like other object-caching plugins) extends WordPress\u2019s caching subsystem to save those short-term copies from page view to page view. WordPress\u2019s cache happens to be a <a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cache_(computing)#Memoization\" rel=\"nofollow ugc noopener\">memoization<\/a> cache.<\/p>\n<p>Without a persistent object cache, every WordPress page view must use your MariaDB or MySQL database server to retrieve everything about your site. When a user requests a page, WordPress starts from scratch and loads everything it needs from your database server. Only then can it deliver content to your user. With a persistent object cache, WordPress immediately loads much of the information it needs. This lightens the load on your  database server and delivers content to your users faster.<\/p>\n<h4>Who should use this?<\/h4>\n<p>If your site runs on a single web server machine, and that server provides the <a target=\"_blank\" href=\"https:\/\/www.php.net\/manual\/en\/book.sqlite3.php\" rel=\"nofollow ugc noopener\">SQLite3<\/a> and <a target=\"_blank\" href=\"https:\/\/www.php.net\/manual\/en\/intro.igbinary.php\" rel=\"nofollow ugc noopener\" class=\"broken_link\">igbinary<\/a> extensions to php, this plugin will almost certainly make your site work better.<\/p>\n<p>Some hosting providers offer <a target=\"_blank\" href=\"https:\/\/redis.io\/\" rel=\"nofollow ugc noopener\">redis<\/a> cache servers. If your provider offers redis, it may be a good choice. You can use it via tbe <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/redis-cache\/\" rel=\"ugc noopener\">Redis Object Cache<\/a> plugin. Sites using redis have one SQL database and another non-SQL storage scheme: redis. Other hosting providers offer <a target=\"_blank\" href=\"https:\/\/memcached.org\/\" rel=\"nofollow ugc noopener\">memcached<\/a>, which has the <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/memcached\/\" rel=\"ugc noopener\">Memcached Object Cache<\/a> plugin. And some large multipurpose cache plugins, such as the <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/litespeed-cache\/\" rel=\"ugc noopener\">LiteSpeed Cache<\/a>, also offer object caching based on one of those cache server software packages.<\/p>\n<p>The cache-server approach to object caching comes into its own when you have multiple load-balanced web server machines handling your site. SQLite doesn\u2019t work correctly in a multiple-web-server environment.<\/p>\n<p>But, for single-server site configurations, SQLite performs well. And the vast majority of sites are single-server.<\/p>\n<h4>WP-CLI<\/h4>\n<p>You can control this plugin via WP-CLI. Please type this command into your shell for details.<\/p>\n<pre><code>wp help sqlite-object-cache\n<\/code><\/pre>\n<h4>Credits<\/h4>\n<p>Thanks to <a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/tillkruess\/\" rel=\"nofollow ugc noopener\">Till Kr\u00fcss<\/a>. His <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/redis-cache\/\" rel=\"ugc noopener\">Redis Object Cache<\/a> plugin serves as a model for this one. And thanks to <a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/aristath\/\" rel=\"nofollow ugc noopener\">Ari Stathopoulos<\/a> and <a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/spacedmonkey\/\" rel=\"nofollow ugc noopener\">Jonny Harris<\/a> for reviewing this. Props to Matt Jones for finding and fixing a bug that appeared on a heavily loaded system. All defects are, of course, entirely the author\u2019s responsibility.<\/p>\n<p>And thanks to Jetbrains for the use of their software development tools, especially <a target=\"_blank\" href=\"https:\/\/www.jetbrains.com\/phpstorm\/\" rel=\"nofollow ugc noopener\">PhpStorm<\/a>. It\u2019s hard to imagine how a plugin like this one could be developed without PhpStorm\u2019s tools for exploring epic code bases like WordPress\u2019s.<\/p>\n<h4>How can I learn more about making my WordPress site more efficient?<\/h4>\n<p>We offer several plugins to help with your site\u2019s database efficiency. You can <a target=\"_blank\" href=\"https:\/\/www.plumislandmedia.net\/wordpress\/performance\/optimizing-wordpress-database-servers\/\" rel=\"nofollow ugc noopener\">read about them here<\/a>.<\/p>\n<\/div>\n<div id=\"screenshots\" class=\"plugin-screenshots section\">\n<h2 id=\"screenshots-header\">Screenshots<\/h2>\n<ul class=\"plugin-screenshots\">\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/sqlite-object-cache\/assets\/screenshot-1.png?rev=2919188\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/sqlite-object-cache\/assets\/screenshot-1.png?rev=2919188\" alt=\"\"><\/a><figcaption>Settings panel. Access it with Settings &gt; Object Cache.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/sqlite-object-cache\/assets\/screenshot-2.png?rev=2919188\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/sqlite-object-cache\/assets\/screenshot-2.png?rev=2919188\" alt=\"\"><\/a><figcaption>Performance statistics panel.<\/figcaption><\/figure>\n<\/li>\n<\/ul>\n<\/div>\n<div id=\"tab-installation\" class=\"plugin-installation section\">\n<h2 id=\"installation-header\">Installation<\/h2>\n<p>Installing \u201cSQLite Object Cache\u201d can be done either by searching for \u201cSQLite Object Cache\u201d via the \u201cPlugins &gt; Add New\u201d screen in your WordPress dashboard, or by using the following standard steps:<\/p>\n<ol>\n<li>Download the plugin via WordPress.org<\/li>\n<li>Upload the ZIP file through the \u2018Plugins &gt; Add New &gt; Upload\u2019 screen in your WordPress dashboard<\/li>\n<li>Activate the plugin through the \u2018Plugins\u2019 menu in WordPress<\/li>\n<\/ol>\n<p>Or, use these WP-CLI commands to install the plugin, secure it, activate it, and set the cache size to 32MiB.<\/p>\n<pre><code>wp plugin install sqlite-object-cache\nRAND=$(openssl rand -base64 12)\nwp config set WP_CACHE_KEY_SALT $RAND\nwp plugin activate sqlite-object-cache\nwp sqlite-object-cache size 32\n<\/code><\/pre>\n<p>The plugin offers optional settings for your <code>wp-config.php<\/code> file. If you change them, deactivate the plugin first, then change them, then reactivate the plugin.<\/p>\n<ol>\n<li>WP_SQLITE_OBJECT_CACHE_DB_FILE. This is the SQLite file pathname. The default is \u2026\/wp-content\/.ht.object_cache.sqlite. Use this if you want to place the SQLite cache file outside your document root.<\/li>\n<li>WP_SQLITE_OBJECT_CACHE_TIMEOUT. This is the SQLite timeout in <em>milliseconds<\/em>. Default: 5000. (Notice that the times shown in the Statistics tab are in <em>microseconds<\/em> if you compare them to this timeout setting.)<\/li>\n<li>WP_SQLITE_OBJECT_CACHE_JOURNAL_MODE. This is the <a target=\"_blank\" href=\"https:\/\/www.sqlite.org\/pragma.html#pragma_journal_mode\" rel=\"nofollow ugc noopener\">SQLite journal mode<\/a>. Default: \u2018WAL\u2019. Possible values DELETE | TRUNCATE | PERSIST | MEMORY | WAL | WAL2 | NONE. (Not all SQLite3 implementations handle WAL2.)<\/li>\n<li>WP_CACHE_KEY_SALT. Set this to a hard-to-guess random value to make your cache keys harder to guess. This setting works for other cache plugins.<\/li>\n<\/ol>\n<\/div>\n<div id=\"faq\" class=\"plugin-faq section\">\n<h2 id=\"faq-header\">FAQ<\/h2>\n<dl>\n<dt id=\"does%20this%20work%20with%20a%20multisite%20wordpress%20installation%3F\">\n<h3>Does this work with a multisite WordPress installation?<\/h3>\n<\/dt>\n<dd>\n<p><strong>Yes<\/strong>.  To see the Settings page, choose Settings &gt; Object Cache from the first site, or any site, in the multisite installation.<\/p>\n<\/dd>\n<dt id=\"how%20much%20faster%20will%20this%20make%20my%20site%3F\">\n<h3>How much faster will this make my site?<\/h3>\n<\/dt>\n<dd>\n<p>Exactly predicting each site\u2019s speedup is not possible. Still, benchmarking results are promising. Please see <a target=\"_blank\" href=\"https:\/\/www.plumislandmedia.net\/wordpress-plugins\/sqlite-object-cache\/benchmarks\/\" rel=\"nofollow ugc noopener\">this<\/a>. If you run a benchmark, please let the author know by leaving a comment on that page or using the <a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/sqlite-object-cache\/\" rel=\"ugc noopener\">support forum<\/a>.<\/p>\n<\/dd>\n<dt id=\"what%20cached%20data%20size%20should%20i%20use%20for%20my%20site%3F\">\n<h3>What Cached Data Size should I use for my site?<\/h3>\n<\/dt>\n<dd>\n<p>The default setting for Cached Data Size is 16 megabytes (MiB). This plugin allows the actual cached data size to grow larger than that, and occasionally removes old \u2014 the least recently updated \u2014 data to trim back the size to the setting. Take a look at the Statistics page. If your actual cached data usage under All Groups is consistently larger than the setting, double the setting.<\/p>\n<p>If you operate a large and busy site, try an initial setting of 32 MiB, then adjust it based on the growth of the actual size.<\/p>\n<p>Notice that this setting controls the size of the data in the cache. That is the size shown under All Groups. The data file used by SQLite is larger than that.<\/p>\n<\/dd>\n<dt id=\"what%20is%20sqlite%3F\">\n<h3>What is SQLite?<\/h3>\n<\/dt>\n<dd>\n<p><a target=\"_blank\" href=\"https:\/\/www.sqlite.org\/about.html\" rel=\"nofollow ugc noopener\">SQLite<\/a> is fast and efficient database software. It doesn\u2019t require a separate server. Instead, it is built into php using the <a target=\"_blank\" href=\"https:\/\/www.php.net\/manual\/en\/book.sqlite3.php\" rel=\"nofollow ugc noopener\">SQLite3<\/a> extension. SQLite programs don\u2019t need to open network connections to send requests and wait for replies.<\/p>\n<\/dd>\n<dt id=\"what%20is%20igbinary%3F\">\n<h3>What is igbinary?<\/h3>\n<\/dt>\n<dd>\n<p><a target=\"_blank\" href=\"https:\/\/www.php.net\/manual\/en\/ref.igbinary.php\" rel=\"nofollow ugc noopener\">igbinary<\/a> is a php extension that provides an efficient way to serialize and compress data. It, in some cases, uses less than half the storage space of the built-in php data <a target=\"_blank\" href=\"https:\/\/www.php.net\/manual\/en\/function.serialize.php\" rel=\"nofollow ugc noopener\">serializer<\/a>. If igbinary is available in your php configuration, this plugin uses it.<\/p>\n<\/dd>\n<dt id=\"does%20this%20plugin%20replace%20mariadb%20or%20mysql%20with%20sqlite%3F\">\n<h3>Does this plugin replace MariaDB or MySQL with SQLite?<\/h3>\n<\/dt>\n<dd>\n<p><strong>No.<\/strong>  Your MariaDB or MySQL database sql server still holds all your content. All your site\u2019s imports, exports, backups and other database operations continue to function normally.  This plugin uses SQLite simply to hold named values. For example, a value named \u201cpost|3\u201d will hold a temporary, easy-to-retrieve cached copy of post number 3. When it needs that post, WordPress can fetch it quickly from SQLite.<\/p>\n<\/dd>\n<dt id=\"wait%2C%20what%3F%20do%20i%20really%20need%20two%20different%20kinds%20of%20sql%20database%3F\">\n<h3>Wait, what? Do I really need two different kinds of SQL database?<\/h3>\n<\/dt>\n<dd>\n<p>No, you don\u2019t. This plugin doesn\u2019t use SQLite as a full-fledged database server.<\/p>\n<p>A persistent object cache needs some kind of storage mechanism. SQLite serves this plugin as a fast and simple key \/ value storage mechanism.<\/p>\n<p>Some hosting providers offer scalable high-performance <a target=\"_blank\" href=\"https:\/\/redis.io\/\" rel=\"nofollow ugc noopener\">redis<\/a> cache servers.  You can use it via <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/redis-cache\/\" rel=\"ugc noopener\">Redis Object Cache<\/a> plugin. Sites using redis have one SQL database and another non-SQL storage scheme: redis. Other hosting providers offer <a target=\"_blank\" href=\"https:\/\/memcached.org\/\" rel=\"nofollow ugc noopener\">memcached<\/a>, which has the <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/memcached\/\" rel=\"ugc noopener\">Memcached Object Cache<\/a>.<\/p>\n<p>But many hosting providers don\u2019t offer either redis or memcached, while they do offer SQLite. This plugin enables your site to use a persistent object cache even without a separate cache server. And, because everything happens within your web server, the performance is good.<\/p>\n<\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20my%20page-caching%20plugin%3F\">\n<h3>Is this plugin compatible with my page-caching plugin?<\/h3>\n<\/dt>\n<dd>\n<p><strong>Probably<\/strong>. Page caching and persistent object caching are completely separate functions in WordPress. But, some multi-feature caching plugins support optional object caching using redis or memcached. If that feature is enabled in your page cache plugin, you should not use this plugin.<\/p>\n<p>You can find out whether your page-cache plugin also enables persistent object caching. Look at the Drop-in section of the Plugins -&gt; Installed Plugins page. If it mentions the drop-in called \u201cobject-cache.php\u201d then your page cache plugin is handling persistent object caching. You should disable that feature before using  this plugin.<\/p>\n<p>Users of this plugin have found that it works well with WP Rocket, LiteSpeed Cache, WP Total Cache, WP Super Cache, and WP Fastest Cache. It also works with Cloudflare and other content delivery networks. The author has not learned of any incompatibilities in this area. (If you find one <em>please<\/em> start a support topic!)<\/p>\n<\/dd>\n<dt id=\"can%20i%20disable%20object%20caching%20for%20my%20backend%20dashboard%20or%20other%20pages%20or%20rest%20api%20operations%20i%20choose%3F\">\n<h3>Can I disable object caching for my backend dashboard or other pages or REST API operations I choose?<\/h3>\n<\/dt>\n<dd>\n<p><strong>No.<\/strong><\/p>\n<p>That\u2019s not how object caching works. It\u2019s different from page caching. It works at the level of individual database operations in the WordPress code, not at the level of whole pages.<\/p>\n<\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20my%20version%20of%20mysql%20or%20mariadb%3F\">\n<h3>Is this plugin compatible with my version of MySQL or MariaDB?<\/h3>\n<\/dt>\n<dd>\n<p><strong>Yes<\/strong>. It does not require any specific database server version.<\/p>\n<\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20my%20version%20of%20redis%20or%20memcached%3F\">\n<h3>Is this plugin compatible with my version of redis or memcached?<\/h3>\n<\/dt>\n<dd>\n<p>It does not use either.<\/p>\n<\/dd>\n<dt id=\"this%20cache%20uses%20a%20file%20on%20my%20server%20hdd%2Fssd%2C%20while%20redis%20and%20memcached%20use%20ram.%20isn%27t%20ram%20faster%3F\">\n<h3>This cache uses a file on my server HDD\/SSD, while redis and memcached use RAM. Isn\u2019t RAM faster?<\/h3>\n<\/dt>\n<dd>\n<p>RAM is indeed faster. Modern server operating systems offer extensive page caching for files, and SQLite is designed to take advantage of that, so the data needed may already be in RAM. Using a separate cache server require the web server to issue network requests and wait for responses, whereas using SQLite does not. Many users have found this caching methodology to be fast.<\/p>\n<\/dd>\n<dt id=\"why%20not%20use%20the%20site%27s%20main%20mariadb%20or%20mysql%20database%20server%20for%20the%20object%20cache%3F\">\n<h3>Why not use the site\u2019s main MariaDB or MySql database server for the object cache?<\/h3>\n<\/dt>\n<dd>\n<p>In WordPress, as in many web frameworks, your database server is a performance bottleneck. Using some other mechanism for the object cache avoids adding to your database workload. Web servers serve pages using multiple php processes, and each process handles its own SQLite workload while updating a shared database file. That spreads the object-cache workload out over many processes rather than centralizing it.<\/p>\n<\/dd>\n<dt id=\"do%20i%20have%20to%20back%20up%20the%20data%20in%20sqlite%3F\">\n<h3>Do I have to back up the data in SQLite?<\/h3>\n<\/dt>\n<dd>\n<p><strong>No.<\/strong> It\u2019s a cache, and everything in it is ephemeral. When WordPress cannot find what it needs in the cache, it simply recomputes it or refetches it from the database.<\/p>\n<p>To avoid backing up SQLite files, tell your backup plugin to skip the files named <code>*.sqlite<\/code>, <code>*.sqlite-wal<\/code>,  <code>*.sqlite-wal2<\/code>, and <code>*.sqlite-shm<\/code>.<\/p>\n<p>This plugin automatically suppresses backing up your SQLite data when you use the <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/updraftplus\/\" rel=\"ugc noopener\">Updraft Plus<\/a>, <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/backwpup\/\" rel=\"ugc noopener\">BackWPUp<\/a>, or <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/wp-staging\/\" rel=\"ugc noopener\">WP STAGING<\/a> plugins. The <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/duplicator\/\" rel=\"ugc noopener\">Duplicator<\/a> plugin does not offer an automated way to suppress copying those files.<\/p>\n<p>If you use some other backup or cloning plugin, please let the author know by creating a <a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/sqlite-object-cache\/\" rel=\"ugc noopener\">support topic<\/a>.<\/p>\n<\/dd>\n<dt id=\"if%20i%20already%20have%20another%20persistent%20object%20cache%20plugin%2C%20can%20i%20use%20this%20one%3F\">\n<h3>If I already have another persistent object cache plugin, can I use this one?<\/h3>\n<\/dt>\n<dd>\n<p><strong>No.<\/strong> You only need one persistent object cache plugin, and WordPress only supports one.<\/p>\n<\/dd>\n<dt id=\"if%20i%20operate%20a%20scaled-up%20load-balanced%20installation%2C%20can%20i%20use%20this%3F\">\n<h3>If I operate a scaled-up load-balanced installation, can I use this?<\/h3>\n<\/dt>\n<dd>\n<p><strong>No.<\/strong> If you have more than one web server this doesn\u2019t work correctly. If you operate at that scale, use redis or some other cache server. (If you aren\u2019t sure whether you have a load-balanced installation, you almost certainly do not.)<\/p>\n<p>Please notice that SQLite does not work correctly if you put its files on a shared network drive (via CIFS, SMB, NFS, or some other drive sharing protocol).<\/p>\n<\/dd>\n<dt id=\"can%20i%20use%20this%20with%20the%20performance%20lab%20plugin%3F\">\n<h3>Can I use this with the Performance Lab plugin?<\/h3>\n<\/dt>\n<dd>\n<p><strong>Yes, but<\/strong> you must <em>activate this plugin first<\/em> before you activate <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/performance-lab\/\" rel=\"ugc noopener\">Performance Lab<\/a>. And, you must deactivate Performance Lab before <em>deactivating this plugin last<\/em>.<\/p>\n<p>The <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/performance-lab\/\" rel=\"ugc noopener\">Performance Lab plugin<\/a> offers some advanced and experimental ways of making your site faster. One of its features uses object-cache initialization code to start tracking performance. So there\u2019s a required order of activation if you want both to work.<\/p>\n<\/dd>\n<dt id=\"how%20can%20i%20use%20this%20object%20cache%20to%20make%20my%20plugin%20or%20theme%20code%20run%20faster%3F\">\n<h3>How can I use this object cache to make my plugin or theme code run faster?<\/h3>\n<\/dt>\n<dd>\n<p>Easy. Use transients to store your cacheable data. WordPress\u2019s <a target=\"_blank\" href=\"https:\/\/developer.wordpress.org\/apis\/transients\/\" rel=\"nofollow ugc noopener\">Transient API<\/a> uses persistent object caching if it\u2019s available, and the MariaDB or MySQL database when it isn\u2019t. The <a target=\"_blank\" href=\"https:\/\/developer.wordpress.org\/apis\/metadata\/\" rel=\"nofollow ugc noopener\">Metadata API<\/a> and <a target=\"_blank\" href=\"https:\/\/developer.wordpress.org\/apis\/options\/\" rel=\"nofollow ugc noopener\">Options API<\/a> also use persistent object caching.<\/p>\n<\/dd>\n<dt id=\"how%20does%20this%20work%3F\">\n<h3>How does this work?<\/h3>\n<\/dt>\n<dd>\n<p>This plugin uses a <a target=\"_blank\" href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_dropins\/\" rel=\"nofollow ugc noopener\">WordPress drop-in<\/a> to extend the functionality of the WP_Cache class. When you activate the plugin it creates the dropin file <code>...\/wp-content\/object-cache.php<\/code>. Upon deactivation, it removes that file and the cached data.<\/p>\n<\/dd>\n<dt id=\"where%20does%20the%20plugin%20store%20the%20cached%20data%3F\">\n<h3>Where does the plugin store the cached data?<\/h3>\n<\/dt>\n<dd>\n<p>It\u2019s in your site\u2019s <code>wp_content<\/code> directory, in the file named <code>.ht.object-cache.sqlite<\/code>. That file\u2019s name has the <code>.ht.<\/code> prefix to prevent your web server from allowing it to be downloaded. SQLite also sometimes uses the files named <code>.ht.object-cache.sqlite-shm<\/code> and <code>.ht.object-cache.sqlite-wal<\/code>, so you may see any of those files.<\/p>\n<p>You can make the plugin put its files at some other location by putting the pathname you want in <code>WP_SQLITE_OBJECT_CACHE_DB_FILE<\/code> in your <code>wp-config.php<\/code>.<\/p>\n<p>On Linux and other UNIX-derived operating systems, you must give the command <code>ls -a<\/code> to see files when their names begin with a dot.<\/p>\n<\/dd>\n<dt id=\"i%20want%20to%20store%20my%20cached%20data%20in%20a%20more%20secure%20place.%20how%20do%20i%20do%20that%3F\">\n<h3>I want to store my cached data in a more secure place. How do I do that?<\/h3>\n<\/dt>\n<dd>\n<p>Putting your .sqlite files outside your site\u2019s document root is good security practice. This is how you do it. If you define the constant <code>WP_SQLITE_OBJECT_CACHE_DB_FILE<\/code> in <code>wp_config.php<\/code> the plugin uses that for sqlite\u2019s file pathname instead. For example, if <code>wp-config.php<\/code> contains this line<\/p>\n<pre><code>define( 'WP_SQLITE_OBJECT_CACHE_DB_FILE', '\/tmp\/mysite-object-cache.sqlite' );\n<\/code><\/pre>\n<p>your object cache data goes into the <code>\/tmp<\/code> folder in a file named <code>mysite-object-cache.sqlite<\/code>.<\/p>\n<p>You can also define <code>WP_CACHE_KEY_SALT<\/code> to be a text string. Continuing the example, this line<\/p>\n<pre><code>define( 'WP_CACHE_KEY_SALT', 'qrstuv' );\n<\/code><\/pre>\n<p>causes your object cache data to go into the <code>\/tmp<\/code> folder in a file named <code>mysite-object-cache.qrstuv.sqlite<\/code>.<\/p>\n<\/dd>\n<dt id=\"can%20this%20plugin%20use%20sqlite%20memory-mapped%20i%2Fo%3F\">\n<h3>Can this plugin use SQLite memory-mapped I\/O?<\/h3>\n<\/dt>\n<dd>\n<p><strong>Yes<\/strong>. You can use your OS\u2019s memory map feature to access and share cache data with <a target=\"_blank\" href=\"https:\/\/www.sqlite.org\/mmap.html\" rel=\"nofollow ugc noopener\">SQLite Memory-Mapped I\/O<\/a>. On some server configurations this allows multiple php processes to share cached data more quickly. In the plugin this is disabled by default. You can enable it by telling the plugin how many MiB to use for memory mapping. For example, this wp-config setting tells the plugin to use 32MiB.<\/p>\n<pre><code>define( 'WP_SQLITE_OBJECT_CACHE_MMAP_SIZE', 32 );\n<\/code><\/pre>\n<p>Notice that using memory-mapped I\/O may not help performance in the highly concurrent environment of a busy web server.<\/p>\n<\/dd>\n<dt id=\"i%20sometimes%20get%20timeout%20errors%20from%20sqlite.%20how%20can%20i%20fix%20them%3F\">\n<h3>I sometimes get timeout errors from SQLite. How can I fix them?<\/h3>\n<\/dt>\n<dd>\n<p>Some sites occasionally generate error messages looking like this one:<\/p>\n<pre><code>Unable to execute statement: database is locked in \/var\/www\/wp-content\/object-cache.php:1234\n<\/code><\/pre>\n<p>This can happen if your server places your WordPress files on network-attached storage (that is, on a network drive). To solve this, store your cached data on a locally attached drive. See the question about storing your data in a more secure place. It also can happen in a very busy site.<\/p>\n<\/dd>\n<dt id=\"why%20do%20i%20get%20errors%20when%20i%20use%20wp-cli%20to%20administer%20my%20site%3F\">\n<h3>Why do I get errors when I use WP-CLI to administer my site?<\/h3>\n<\/dt>\n<dd>\n<p>Sometimes <a target=\"_blank\" href=\"https:\/\/wp-cli.org\/\" rel=\"nofollow ugc noopener\">WP-CLI<\/a> commands issued from a shell run with a different user from the web server. This plugin creates one or more object-cache files. An object-cache file may not be readable or writeable by the web server if it was created by the wp-cli user. Or the other way around.<\/p>\n<p>On Linux, you can run your WP-CLI shell commands like this:  <code>sudo -u www-data wp config list<\/code>  This ensures they run with the same user as the web server.<\/p>\n<\/dd>\n<dt id=\"what%20do%20the%20statistics%20mean%3F\">\n<h3>What do the Statistics mean?<\/h3>\n<\/dt>\n<dd>\n<p>Please <a target=\"_blank\" href=\"https:\/\/www.plumislandmedia.net\/wordpress-plugins\/sqlite-object-cache\/statistics-from-sqlite-object-cache\/\" rel=\"nofollow ugc noopener\">read this<\/a>.<\/p>\n<\/dd>\n<dt id=\"is%20there%20a%20joke%20somewhere%20in%20this%3F\">\n<h3>Is there a joke somewhere in this?<\/h3>\n<\/dt>\n<dd>\n<p>Q: What are the two hardest things to get right in computer science?<\/p>\n<ol>\n<li>Caching things.<\/li>\n<li>Naming things.<\/li>\n<li>Coping with off-by-one errors.<\/li>\n<\/ol>\n<p>Seriously, the core of WordPress has already worked out, over years of development and millions of sites, how to cache things and name them. This plugin simply extends that mechanism to make those things persistent.<\/p>\n<\/dd>\n<dt id=\"i%20have%20another%20question\">\n<h3>I have another question<\/h3>\n<\/dt>\n<dd>\n<p>Please look for more questions and answers <a target=\"_blank\" href=\"https:\/\/www.plumislandmedia.net\/wordpress-plugins\/sqlite-object-cache\/faq\/\" rel=\"nofollow ugc noopener\">here<\/a>. Or ask your question in the <a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/sqlite-object-cache\/\" rel=\"ugc noopener\">support forum<\/a>.<\/p>\n<\/dd>\n<\/dl>\n<\/div>\n<div id=\"tab-reviews\" class=\"plugin-reviews section\">\n<h2 id=\"reviews-header\">Reviews<\/h2>\n<div class=\"plugin-reviews\">\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/78da472dbcb32e63bfc20321d709db1c3a9500ec82109b72963af7acdb0076c2?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/78da472dbcb32e63bfc20321d709db1c3a9500ec82109b72963af7acdb0076c2?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/amazing-4091\/\" rel=\"noopener\">Amazing<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/metint\/\" title=\"Posts by metint\" rel=\"author noopener\">metint<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">February 7, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">It\u2019s something I always look for. I have a central database that supports almost 20 websites on different hosting platforms. This plugin effectively decreases the load on the database.<\/p>\n<p>Thank you so much. Please continue to develop it further.<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/69fd533ed436ae6a1480839b0b45005776947f133ba44f362f659f33a8e9f2ab?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/69fd533ed436ae6a1480839b0b45005776947f133ba44f362f659f33a8e9f2ab?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/great-project-7\/\" rel=\"noopener\">great project!<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/vander25\/\" title=\"Posts by vander25\" rel=\"author noopener\">vander25<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">January 31, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Great work, hope to see this continue.<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/c218c7f675b81fc117877c0a0f8f842b4268543d3e7501fa8c6e3b0717a2485d?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/c218c7f675b81fc117877c0a0f8f842b4268543d3e7501fa8c6e3b0717a2485d?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/enjoy-the-fast-show\/\" rel=\"noopener\">Enjoy the fast show<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/masvil\/\" title=\"Posts by masvil\" rel=\"author noopener\">masvil<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">January 24, 2025<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"review-replies\">4 replies<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">This is Pure Gold. Just install it and enjoy the show. The fast show.<\/p>\n<p>Oliver Jones is a genius. Just don\u2019t listen to him when he says that you should use Redis instead, if available. I think he does it out of respect for his muse.<\/p>\n<p>Actually, in most cases, SQLite Object Cache outperforms Redis Object Cache. Just try yourself. Furthermore, it\u2019s 100% portable. You know how that is convenient, especially if you tried to migrate a WP installation with Redis to another server.<\/p>\n<p>I think it should be part of the WP core. They still haven\u2019t realized why.<\/p>\n<p>You should also check wordpress.org\/plugins\/index-wp-mysql-for-speed\/, another hidden gem from Oliver.<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/2ac90f17873e6f228e8daf092df27a3f3c90951bd5aaef58ffc238f781e2d49a?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/2ac90f17873e6f228e8daf092df27a3f3c90951bd5aaef58ffc238f781e2d49a?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/amazing-4066\/\" rel=\"noopener\">Amazing<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/benniledl\/\" title=\"Posts by Benedikt Ledl\" rel=\"author noopener\">Benedikt Ledl<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">December 2, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Thanks so much!<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/0acb75666bb6e9b87a13c2078f9cc068fb3f413ab9431beadf492823f9ff903d?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/0acb75666bb6e9b87a13c2078f9cc068fb3f413ab9431beadf492823f9ff903d?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/the-best-2611\/\" rel=\"noopener\">The Best<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/irawankosasih\/\" title=\"Posts by irawankosasih\" rel=\"author noopener\">irawankosasih<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">October 26, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">The best object cache so far. I\u2019ve tried several object cache before this; APCu,Memcached,Redis, this is the most compatible with no errors and high hit rate in my wordpress sites.<\/p>\n<p>Thank you so much<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/254a59bed5ceba80bc76121d509cbea8052c6dd30003fc2f71ed4748220f2cd5?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/254a59bed5ceba80bc76121d509cbea8052c6dd30003fc2f71ed4748220f2cd5?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/love-it-4208\/\" rel=\"noopener\">LOVE IT!<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/tehcook\/\" title=\"Posts by Aggravated Badger\" rel=\"author noopener\">Aggravated Badger<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">August 2, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Effiecient object caching for those on servers that don\u2019t have Redis\/Memcache. Keep up the good work!<\/div>\n<\/p><\/div>\n<\/article><\/div>\n<p>\t\t<a target=\"_blank\" class=\"reviews-link\" href=\"https:\/\/wordpress.org\/support\/plugin\/sqlite-object-cache\/reviews\/\" rel=\"noopener\"><br \/>\n\t\t\tRead all 35 reviews\t\t<\/a><\/div>\n<div id=\"tab-developers\" class=\"plugin-developers section\">\n<h2 id=\"developers-header\">Contributors &amp; Developers<\/h2>\n<div class=\"plugin-contributors\">\n<p>\u201cSQLite Object Cache\u201d is open source software. The following people have contributed to this plugin.<\/p>\n<p><span class=\"screen-reader-text\">Contributors<\/span><\/p>\n<ul id=\"contributors-list\" class=\"contributors-list\">\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/6ac7c2e9bb1e43d09d87b780c06c09b391a52680c3b1512bcd094176376a1a26?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/6ac7c2e9bb1e43d09d87b780c06c09b391a52680c3b1512bcd094176376a1a26?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/olliejones\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tOllieJones\t\t\t\t<\/a>\n\t\t\t<\/li>\n<\/ul><\/div>\n<div class=\"plugin-development\">\n<p>\u201cSQLite Object Cache\u201d has been translated into 3 locales. Thank you to <a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/sqlite-object-cache\/contributors\" rel=\"noopener\">the translators<\/a> for their contributions.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/sqlite-object-cache\" rel=\"noopener\">Translate \u201cSQLite Object Cache\u201d into your language.<\/a><\/p>\n<h3>Interested in development?<\/h3>\n<p><a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/browser\/sqlite-object-cache\/\" rel=\"noopener\" class=\"broken_link\">Browse the code<\/a>, check out the <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/sqlite-object-cache\/\" rel=\"noopener\">SVN repository<\/a>, or subscribe to the <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/sqlite-object-cache\/\" rel=\"noopener\" class=\"broken_link\">development log<\/a> by <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/sqlite-object-cache\/?limit=100&amp;mode=stop_on_copy&amp;format=rss\" rel=\"noopener\" class=\"broken_link\">RSS<\/a>.<\/p>\n<\/div>\n<\/div>\n<div id=\"tab-changelog\" class=\"plugin-changelog section\">\n<h2 id=\"changelog-header\">Changelog<\/h2>\n<h4>1.4.1<\/h4>\n<ul>\n<li>More efficient testing for drop-in validity.<\/li>\n<li>More accurate least-recently-updated cleanup.<\/li>\n<\/ul>\n<h4>1.4.0<\/h4>\n<ul>\n<li>Add WP-CLI support.<\/li>\n<li>Make sure to close .sqlite files to avoid file-descriptor leaks in long-running processes. Props to Matt Jones.<\/li>\n<\/ul>\n<h4>1.3.8<\/h4>\n<p>Add some support for new SQLite WAL2 write-ahead logging.<br \/>\nSupport WordPress 6.5.<\/p>\n<h4>1.3.7<\/h4>\n<p>Bug fix: Not all versions of SQLite can do DELETE \u2026 LIMIT, so do transaction-size-limited DELETEs a different way.<\/p>\n<h4>1.3.6<\/h4>\n<ul>\n<li>Clean up in chunks in an attempt to reduce contention delays and timeouts.<\/li>\n<li>Do PRAGMA wal_checkpoint(RESTART) when cleaning up, and also occasionally, to prevent the write-ahead log from growing without bound on busy systems.<\/li>\n<li>Retry three times if cache updates time out.<\/li>\n<li>Increase default cache size to 16MiB for new users.<\/li>\n<\/ul>\n<h4>1.3.5<\/h4>\n<ul>\n<li>php 8.1, php 8.2 compatibility.<\/li>\n<li>Support for WordFence and other code using the object cache after shutdown.<\/li>\n<\/ul>\n<h4>1.3.4<\/h4>\n<ul>\n<li>Support SQLite Memory-Mapped I\/O.<\/li>\n<li>Reduce contention delays by limiting the number of get_multiple, set_multiple, add_multiple, and delete_multiple items in each transaction.<\/li>\n<li>Reduce index page fragmentation by using key order for set_multiple and add_multiple operations.<\/li>\n<li>Fix initialization defect in cache deletion. Props to @gRoberts84.<\/li>\n<\/ul>\n<h4>1.3.2<\/h4>\n<ul>\n<li>Avoid VACUUM except on cache flush, and do it only with maintenance mode enabled.<\/li>\n<\/ul>\n<\/div><\/div>\n<p><!-- .entry-content --><\/p>\n<p>\t<!-- .entry-meta --><br \/>\n<\/article>\n<p><br \/>\n<br \/><a href=\"https:\/\/wordpress.org\/plugins\/sqlite-object-cache\/\" target=\"_blank\" rel=\"noopener\">Source link <\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>SQLite Object Cache By OllieJones Download Details Reviews Installation Development Support Description A persistent object cache helps your site perform well. This one uses the widely available SQLite3 extension to php. Many hosting services offer that extension, and it is easy to install on a server you control. What is this about? It\u2019s about making [&hellip;]<\/p>","protected":false},"author":75,"featured_media":3552,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"give_campaign_id":0,"footnotes":""},"categories":[1933,39,40],"tags":[2227,2226,2433],"class_list":["post-3551","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-community-plugin","category-lite-version","category-wp-plugin-solution","tag-cache","tag-object","tag-sqlite"],"acf":[],"fifu_image_url":"https:\/\/ps.w.org\/sqlite-object-cache\/assets\/banner-772x250.jpg?rev=2829632","_links":{"self":[{"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/users\/75"}],"replies":[{"embeddable":true,"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/comments?post=3551"}],"version-history":[{"count":0,"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3551\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media\/3552"}],"wp:attachment":[{"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media?parent=3551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/categories?post=3551"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/tags?post=3551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}