{"id":1334,"date":"2026-09-25T17:18:38","date_gmt":"2026-09-25T17:18:38","guid":{"rendered":"https:\/\/www.ahosting.net\/blog\/?p=1334"},"modified":"2026-09-25T17:18:42","modified_gmt":"2026-09-25T17:18:42","slug":"you-should-use-a-persistent-object-cache","status":"publish","type":"post","link":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/","title":{"rendered":"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures"},"content":{"rendered":"\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"Is the persistent object cache warning in Site Health necessary to fix?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In practice it is a recommendation, not a fault, and many sites can leave it. Site Health shows it when a database table or the set of autoloaded options crosses a fixed size, not when anything is slow or broken. So the first question is whether your site sends much traffic that a page cache cannot serve, such as logged-in members, carts or a busy admin. If most visitors are anonymous and your pages are cached, the benefit of an object cache is small and the notice can wait.\"}}, {\"@type\": \"Question\", \"name\": \"Why does Site Health say I should use a persistent object cache in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Specifically because one of seven counters crossed its line. Every multisite network gets the notice. On a single site it appears when more than 500 options are autoloaded, when those options exceed 100,000 bytes, or when the posts, comments, options, terms or users table reaches 1,000 rows. The test has worked this way since WordPress 6.1 and is unchanged in 7.1.2. It measures size, never speed, and it only runs on sites whose environment type is production.\"}}, {\"@type\": \"Question\", \"name\": \"Can I use a persistent object cache on AHosting shared or WordPress hosting?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"That said, the honest answer is no. A persistent object cache needs a cache server such as Redis or Memcached that your site connects to, and none of the AHosting shared or WordPress plans includes one. We checked our shared servers directly before writing this. A plugin on its own cannot supply the server. If your site genuinely needs one, it means a VPS where you have root access and can run the cache server yourself, and the rest of this guide explains how to tell whether it does.\"}}, {\"@type\": \"Question\", \"name\": \"Persistent object cache vs page cache: which one does my WordPress site need?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Typically the page cache first, because it helps more visitors for less effort. A page cache stores the finished HTML, so an anonymous visitor is served without WordPress running at all. An object cache stores the results of database lookups between requests, so WordPress runs faster when it has to run. Sites with mostly anonymous traffic get most of their gain from the page cache. Membership sites, stores and busy editorial teams send traffic a page cache cannot serve, and that is where an object cache earns its place.\"}}, {\"@type\": \"Question\", \"name\": \"Redis vs Memcached for a WordPress persistent object cache: does the choice matter?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Typically much less than people expect. Both are in-memory servers that WordPress reaches through a drop-in file and a plugin that provides it, and either one removes the repeated database lookups the notice is about. Redis can also write its data to disk and supports richer data types, which some teams want for other reasons. For a WordPress object cache the decision that matters more is having a server that is yours alone, sized for the site, and a well maintained plugin.\"}}, {\"@type\": \"Question\", \"name\": \"Why does my small blog trigger the persistent object cache recommendation?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In particular because the posts table is not a count of your posts. WordPress stores sixteen kinds of content in that one table, including every saved revision, every image and file in the media library, menu items, templates and cached embeds. Revisions are unlimited by default. A blog with a modest number of articles can therefore pass 1,000 rows without anyone noticing, and the count the test reads is an estimate from the database rather than an exact figure.\"}}, {\"@type\": \"Question\", \"name\": \"Does installing a Redis plugin clear the warning on shared hosting in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In fact not by itself, because the plugin is only a connector. It installs a drop-in file that tells WordPress to keep its cache in Redis, and it needs a Redis server to connect to. Without one there is nothing to store data in. Never point a plugin at a cache server that you did not set up and that is not yours alone, because a shared cache means your site and other sites write into the same place. Ask your host what is actually provisioned first.\"}}, {\"@type\": \"Question\", \"name\": \"What does your host appears to support Redis mean in Site Health?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Notably it means less than it sounds. WordPress checks whether PHP has loaded the client library for APCu, Redis, Relay, Memcache or Memcached, and names each one it finds. It never checks whether a cache server is running or whether your account may use one. A host can install a client library for its own reasons on a server where no cache service is offered to customers. Treat the line as a clue to ask about, not as confirmation that a cache is available to you.\"}}, {\"@type\": \"Question\", \"name\": \"When is it worth moving to an AHosting VPS for a persistent object cache in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Ultimately when your slow requests are ones a page cache cannot serve. Logged-in members, WooCommerce carts and checkouts, a busy admin and heavy REST traffic all reach PHP and the database on every request, and those are what an object cache speeds up. An AHosting VPS gives you root access, so you can run Redis or Memcached for your site alone. If your traffic is mostly anonymous and cached, a VPS for this reason alone is money spent on a notice rather than on speed.\"}}, {\"@type\": \"Question\", \"name\": \"Does AHosting LiteSpeed caching replace the need for an object cache?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Indeed for anonymous visitors it covers most of the same ground, and it is worth being clear about where it stops. AHosting WordPress plans run LiteSpeed with LSCache, and a page served from LSCache never starts PHP, so it needs no object cache at all. A logged-in session is not served from the page cache, so those requests still reach PHP and the database. If most of your visitors are logged in, the page cache helps them little and the notice deserves a closer look.\"}}]}<\/script>\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-you-should-use-a-persistent-object-cache-actually-means\">What You Should Use a Persistent Object Cache Actually Means<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-a-persistent-object-cache-is\">What a Persistent Object Cache Is<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-the-persistent-object-cache-notice-mentions-your-host\">Why the Persistent Object Cache Notice Mentions Your Host<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-seven-limits-behind-the-persistent-object-cache-recommendation\">The Seven Limits Behind the Persistent Object Cache Recommendation<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-a-size-test-not-a-speed-test\">A Size Test, Not a Speed Test<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-a-small-site-trips-the-persistent-object-cache-check\">Why a Small Site Trips the Persistent Object Cache Check<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-posts-table-holds-sixteen-kinds-of-content\">The Posts Table Holds Sixteen Kinds of Content<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-revisions-are-the-usual-reason\">Revisions Are the Usual Reason<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-row-count-is-an-estimate\">The Row Count Is an Estimate<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-your-host-appears-to-support-redis-means-for-a-persistent-object-cache\">What Your Host Appears to Support Redis Means for a Persistent Object Cache<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-check-asks-php-not-the-server\">The Check Asks PHP, Not the Server<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-three-kinds-of-name-on-that-list\">Three Kinds of Name on That List<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-can-you-run-a-persistent-object-cache-on-shared-hosting\">Can You Run a Persistent Object Cache on Shared Hosting<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-our-answer-checked-on-our-own-servers\">Our Answer, Checked on Our Own Servers<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-installing-a-plugin-does-nothing-on-its-own\">Why Installing a Plugin Does Nothing on Its Own<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-never-borrow-a-cache-server-you-did-not-set-up\">Never Borrow a Cache Server You Did Not Set Up<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-does-your-site-actually-need-a-persistent-object-cache\">Does Your Site Actually Need a Persistent Object Cache<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-page-cache-comes-first\">The Page Cache Comes First<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-traffic-an-object-cache-helps\">Traffic an Object Cache Helps<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-how-to-measure-it-before-deciding\">How to Measure It Before Deciding<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-how-to-clear-the-persistent-object-cache-notice-honestly\">How to Clear the Persistent Object Cache Notice Honestly<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-find-which-limit-fired\">Find Which Limit Fired<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-three-ways-to-resolve-it\">Three Ways to Resolve It<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-reducing-the-counts\">Reducing the Counts<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-recording-the-decision-in-code\">Recording the Decision in Code<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-when-a-persistent-object-cache-is-worth-moving-for\">When a Persistent Object Cache Is Worth Moving For<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-where-the-work-stops-being-yours\">Where the Work Stops Being Yours<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-a-short-checklist\">A Short Checklist<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-you-should-use-a-persistent-object-cache\">Frequently Asked Questions About the Persistent Object Cache Notice<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#faq-is-the-persistent-object-cache-warning-necessary-to-fix\">Is the persistent object cache warning in Site Health necessary to fix?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-why-does-site-health-say-i-should-use-a-persistent-object-cache-in-2026\">Why does Site Health say I should use a persistent object cache in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-can-i-use-a-persistent-object-cache-on-ahosting-shared-hosting\">Can I use a persistent object cache on AHosting shared or WordPress hosting?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-persistent-object-cache-vs-page-cache-which-does-my-site-need\">Persistent object cache vs page cache: which one does my WordPress site need?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-redis-vs-memcached-for-a-wordpress-persistent-object-cache\">Redis vs Memcached for a WordPress persistent object cache: does the choice matter?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-why-does-my-small-blog-trigger-the-persistent-object-cache-notice\">Why does my small blog trigger the persistent object cache recommendation?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-does-installing-a-redis-plugin-clear-the-warning-on-shared-hosting-2026\">Does installing a Redis plugin clear the warning on shared hosting in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-what-does-your-host-appears-to-support-redis-mean\">What does your host appears to support Redis mean in Site Health?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-when-is-an-ahosting-vps-worth-it-for-a-persistent-object-cache-2026\">When is it worth moving to an AHosting VPS for a persistent object cache in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-does-ahosting-litespeed-caching-replace-an-object-cache\">Does AHosting LiteSpeed caching replace the need for an object cache?<\/a><\/li><\/ul><\/li><\/ul><\/div>\n\n\n<div class=\"ah-tldr\">\n  <span class=\"ah-tldr-badge\">TL;DR<\/span>\n  <p>Site Health recommends a persistent object cache when your site crosses a size line, not when it is slow. Any one of seven counters is enough: a multisite network, more than 500 autoloaded options or 100,000 bytes of them, or 1,000 rows in the posts, comments, options, terms or users table. Revisions and media count as posts, so small sites trip it often. An object cache also needs a cache server, and a plugin alone cannot provide one. Decide first whether your traffic is the kind an object cache speeds up.<\/p>\n<\/div>\n\n\n\n<h2 id=\"aioseo-what-you-should-use-a-persistent-object-cache-actually-means\" class=\"wp-block-heading\">What You Should Use a Persistent Object Cache Actually Means<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When WordPress Site Health prints <em>You should use a persistent object cache<\/em>, it has not found a fault. It has counted a few things about your database, found that one of them crossed a fixed line, and concluded that a site of this size would probably benefit from keeping some data in memory between visits. The notice sits under the Performance badge as a recommendation, never as a critical issue. Nothing in the test measures how fast your pages load or how many people visit them.<\/p>\n\n\n\n<h3 id=\"aioseo-what-a-persistent-object-cache-is\" class=\"wp-block-heading\">What a Persistent Object Cache Is<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress already caches. Every request builds a private store in memory for settings, posts and query results it has already looked up, so it does not ask the database twice for the same thing. At the end of the request that store is thrown away, and the next visitor starts from nothing. That is the non-persistent object cache, and every site has it. A persistent object cache keeps the same store in a separate memory server, usually Redis or Memcached, so it survives from one request to the next. WordPress switches to it when a drop-in file named <code>object-cache.php<\/code> is present in the content directory.<\/p>\n\n\n\n<h3 id=\"aioseo-why-the-persistent-object-cache-notice-mentions-your-host\" class=\"wp-block-heading\">Why the Persistent Object Cache Notice Mentions Your Host<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Below the heading, the notice adds that your hosting provider can tell you whether a persistent object cache can be enabled. That sentence is the honest part of the message. The official <a href=\"https:\/\/developer.wordpress.org\/advanced-administration\/performance\/optimization\/\" target=\"_blank\" rel=\"noopener\">WordPress optimization handbook<\/a> puts it more plainly: your hosting provider must offer you a cache server before any of this works. A plugin is the connector, the server is the cache, and without the server there is nothing to connect to.<\/p>\n\n\n\n<h2 id=\"aioseo-the-seven-limits-behind-the-persistent-object-cache-recommendation\" class=\"wp-block-heading\">The Seven Limits Behind the Persistent Object Cache Recommendation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The decision comes from one short function in core, and every result can be predicted from it. We read it at the WordPress 7.1.2 tag, the current release on 25 September 2026, and compared it with 6.1.0, where the test first appeared. The limits and their order have not changed in between; 7.1 only rewrote the final loop in a newer PHP style. The table lists what is checked, in the order core checks it.<\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>Check<\/th><th>Recommendation appears when<\/th><th>What it counts<\/th><\/tr><\/thead><tbody><tr><td>Environment type<\/td><td>Only tested when it is production<\/td><td>The environment setting in the site configuration<\/td><\/tr><tr><td>Drop-in already loaded<\/td><td>Never; the test passes at once<\/td><td>Whether an external object cache is in use<\/td><\/tr><tr><td>Multisite<\/td><td>Always, for every network<\/td><td>Whether the install is a network<\/td><\/tr><tr><td>Autoloaded options, count<\/td><td>More than 500<\/td><td>Options WordPress loads on every request<\/td><\/tr><tr><td>Autoloaded options, size<\/td><td>More than 100,000 bytes<\/td><td>The same options, serialized<\/td><\/tr><tr><td>Comments table<\/td><td>1,000 rows or more<\/td><td>Estimated rows, including spam and trash<\/td><\/tr><tr><td>Options table<\/td><td>1,000 rows or more<\/td><td>Estimated rows, including transients<\/td><\/tr><tr><td>Posts table<\/td><td>1,000 rows or more<\/td><td>Estimated rows of all sixteen core content types<\/td><\/tr><tr><td>Terms table<\/td><td>1,000 rows or more<\/td><td>Estimated rows of categories, tags and more<\/td><\/tr><tr><td>Users table<\/td><td>1,000 rows or more<\/td><td>Estimated rows of every account<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">The AHosting Persistent Object Cache Threshold Map \u2014 the checks WordPress 7.1.2 runs before printing You should use a persistent object cache, read from core source. Any single row in the recommendation column is enough on its own, and the test stops at the first one it meets.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-a-size-test-not-a-speed-test\" class=\"wp-block-heading\">A Size Test, Not a Speed Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every limit in that table is a count. None of them asks how long your pages take, how busy the server is, or how many of your visitors are logged in, which is the question that actually decides whether a persistent object cache would help. Core treats a large database as a proxy for a busy one. Often that holds. On small sites with long histories it frequently does not, and that is why so many people see this notice on sites nobody would call large. The two autoload limits are the same ones we traced in the guide to <a href=\"https:\/\/www.ahosting.net\/blog\/autoloaded-options-could-affect-performance\/\">the autoloaded options warning<\/a>, which fires from a separate test with its own, larger threshold.<\/p>\n\n\n\n<div class=\"ah-infographic\">\n  <svg viewBox=\"0 0 720 400\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"How WordPress Site Health decides whether to recommend a persistent object cache: it only runs in production, passes any site already using one, recommends one to every multisite network, and otherwise checks two autoloaded option limits and five table row limits, any one of which triggers the recommendation.\">\n    <title>How Site Health decides you should use a persistent object cache<\/title>\n    <desc>The persistent object cache test is registered only when the environment type is production. If an object cache drop-in is already loaded, the result is good. If a filter has decided the answer, that answer is used. A multisite network always receives the recommendation. Otherwise the test counts autoloaded options and their serialized size, then reads estimated row counts for the comments, options, posts, terms and users tables. If more than 500 options are autoloaded, if they exceed 100,000 bytes, or if any of the five tables has 1,000 rows or more, the result is the recommendation You should use a persistent object cache. If none of the limits is reached, the result is good and reads A persistent object cache is not required.<\/desc>\n    <rect x=\"0\" y=\"0\" width=\"720\" height=\"400\" fill=\"#0f172a\"\/>\n    <text x=\"32\" y=\"40\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"19\" font-weight=\"700\">It measures size, never speed.<\/text>\n    <text x=\"32\" y=\"63\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\">What the Site Health persistent object cache test checks, in the order it checks it.<\/text>\n    <rect x=\"32\" y=\"86\" width=\"200\" height=\"74\" fill=\"#1e293b\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n    <text x=\"46\" y=\"110\" fill=\"#60a5fa\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\" font-weight=\"700\">1. Production only<\/text>\n    <text x=\"46\" y=\"130\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">A staging or development site<\/text>\n    <text x=\"46\" y=\"147\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">never runs this test at all<\/text>\n    <rect x=\"260\" y=\"86\" width=\"200\" height=\"74\" fill=\"#1e293b\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n    <text x=\"274\" y=\"110\" fill=\"#60a5fa\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\" font-weight=\"700\">2. Cache already in use?<\/text>\n    <text x=\"274\" y=\"130\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">A loaded drop-in file passes<\/text>\n    <text x=\"274\" y=\"147\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">the test before anything is counted<\/text>\n    <rect x=\"488\" y=\"86\" width=\"200\" height=\"74\" fill=\"#1e293b\" stroke=\"#f59e0b\" stroke-width=\"2\"\/>\n    <text x=\"502\" y=\"110\" fill=\"#f59e0b\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\" font-weight=\"700\">3. Multisite?<\/text>\n    <text x=\"502\" y=\"130\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">Every network is told to use<\/text>\n    <text x=\"502\" y=\"147\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">one, whatever its size<\/text>\n    <rect x=\"32\" y=\"188\" width=\"320\" height=\"120\" fill=\"#1e293b\" stroke=\"#334155\" stroke-width=\"1\"\/>\n    <text x=\"48\" y=\"214\" fill=\"#60a5fa\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\" font-weight=\"700\">4. Autoloaded options<\/text>\n    <text x=\"48\" y=\"240\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">More than 500 of them<\/text>\n    <text x=\"48\" y=\"262\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">More than 100,000 bytes serialized<\/text>\n    <text x=\"48\" y=\"286\" fill=\"#93c5fd\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">Either one is enough to trigger<\/text>\n    <text x=\"48\" y=\"301\" fill=\"#93c5fd\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">the recommendation<\/text>\n    <rect x=\"368\" y=\"188\" width=\"320\" height=\"120\" fill=\"#1e293b\" stroke=\"#f59e0b\" stroke-width=\"2\"\/>\n    <text x=\"384\" y=\"214\" fill=\"#f59e0b\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\" font-weight=\"700\">5. Five tables, 1,000 rows<\/text>\n    <text x=\"384\" y=\"240\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">posts, comments, options,<\/text>\n    <text x=\"384\" y=\"262\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">terms or users<\/text>\n    <text x=\"384\" y=\"286\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">Row counts are database estimates,<\/text>\n    <text x=\"384\" y=\"301\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">not exact counts<\/text>\n    <text x=\"32\" y=\"346\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\" font-weight=\"700\">Any one of the seven limits prints the recommendation.<\/text>\n    <text x=\"32\" y=\"368\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">None of them asks how fast your site is, or how many people are visiting it.<\/text>\n  <\/svg>\n<\/div>\n\n\n\n<h2 id=\"aioseo-why-a-small-site-trips-the-persistent-object-cache-check\" class=\"wp-block-heading\">Why a Small Site Trips the Persistent Object Cache Check<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The row limit sounds generous until you look at what lives in each table. The posts table in particular is not a list of your articles. It is where WordPress keeps almost every kind of content it has, and several of those kinds grow without anyone deciding to create them.<\/p>\n\n\n\n<h3 id=\"aioseo-the-posts-table-holds-sixteen-kinds-of-content\" class=\"wp-block-heading\">The Posts Table Holds Sixteen Kinds of Content<\/h3>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>Stored in the posts table<\/th><th>How it grows<\/th><th>Visible to a visitor<\/th><\/tr><\/thead><tbody><tr><td>Posts and pages<\/td><td>Each one you publish or draft<\/td><td>Yes, once published<\/td><\/tr><tr><td>Revisions<\/td><td>A new row on every save; unlimited by default<\/td><td>No<\/td><\/tr><tr><td>Attachments<\/td><td>One row per file in the media library<\/td><td>Partly<\/td><\/tr><tr><td>Menu items and navigation menus<\/td><td>One row per menu link<\/td><td>No<\/td><\/tr><tr><td>Templates, template parts and global styles<\/td><td>Created by block themes and the site editor<\/td><td>No<\/td><\/tr><tr><td>Reusable blocks and patterns<\/td><td>One row per saved pattern<\/td><td>No<\/td><\/tr><tr><td>Cached embeds<\/td><td>One row per embedded URL that WordPress has fetched<\/td><td>No<\/td><\/tr><tr><td>Custom CSS, font families, font faces, changesets, privacy requests<\/td><td>As those features are used<\/td><td>No<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">The sixteen content types WordPress 7.1.2 registers in the posts table, grouped. Plugins add their own, and a store or form plugin can add far more rows than the articles themselves.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-revisions-are-the-usual-reason\" class=\"wp-block-heading\">Revisions Are the Usual Reason<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress keeps every revision unless you tell it otherwise, because the default for the revisions setting is simply true. The arithmetic is quick. A blog with 150 articles that were each saved six times holds 150 posts and 900 revisions, which is 1,050 rows before a single image is counted. Nobody would call that site large, and it meets the posts limit. We covered how to cap and clear revisions safely in the guide to <a href=\"https:\/\/www.ahosting.net\/blog\/limit-wordpress-post-revisions\/\">limiting WordPress post revisions<\/a>.<\/p>\n\n\n\n<h3 id=\"aioseo-the-row-count-is-an-estimate\" class=\"wp-block-heading\">The Row Count Is an Estimate<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Core does not count the rows. To stay fast, it reads the <code>TABLE_ROWS<\/code> figure from the database catalog, and the <a href=\"https:\/\/mariadb.com\/docs\/server\/reference\/system-tables\/information-schema\/information-schema-tables\/information-schema-tables-table\" target=\"_blank\" rel=\"noopener\">MariaDB reference for that catalog table<\/a> notes that engines such as InnoDB may store an estimate there. A comment in the WordPress source says the same and calls it accurate enough. Usually it is, but after a large cleanup the estimate can lag behind the real count until the table statistics are refreshed. That is why the notice sometimes survives a cleanup that should have cleared it.<\/p>\n\n\n\n<h2 id=\"aioseo-what-your-host-appears-to-support-redis-means-for-a-persistent-object-cache\" class=\"wp-block-heading\">What Your Host Appears to Support Redis Means for a Persistent Object Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When the recommendation appears, it may carry one more sentence: <em>Your host appears to support the following object caching services<\/em>, followed by one or more names. People read this as confirmation that a persistent object cache is waiting to be switched on. It is not that, and the reason is visible in the source.<\/p>\n\n\n\n<h3 id=\"aioseo-the-check-asks-php-not-the-server\" class=\"wp-block-heading\">The Check Asks PHP, Not the Server<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress builds that list by asking PHP whether five extensions are loaded: APCu, Redis, Relay, Memcache and Memcached. It calls <a href=\"https:\/\/www.php.net\/manual\/en\/function.extension-loaded.php\" target=\"_blank\" rel=\"noopener\">the PHP extension_loaded function<\/a> for each name, and that is the entire check. A loaded Redis extension is a client library, the code PHP would use to talk to a Redis server. It says nothing about whether such a server is running, whether it is sized for your site, or whether your account is allowed to use it.<\/p>\n\n\n\n<h3 id=\"aioseo-three-kinds-of-name-on-that-list\" class=\"wp-block-heading\">Three Kinds of Name on That List<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Redis, Memcache and Memcached name client libraries for separate cache servers, so each one needs a server as well as the library. APCu is different: it keeps data inside PHP\u2019s own memory rather than in a server you connect to, and whether that memory survives between requests depends on how the host runs PHP. <a href=\"https:\/\/relay.so\/\" target=\"_blank\" rel=\"noopener\">Relay<\/a> describes itself as both a Redis client and a shared in-memory cache, so it still expects a Redis server behind it. A host can install any of these for its own reasons on a server where no cache service is offered to customers. On some of our own shared servers the Redis client library is installed and no Redis service is sold, so Site Health on those servers may name Redis. Treat the list as a question to ask, never as the answer.<\/p>\n\n\n\n<h2 id=\"aioseo-can-you-run-a-persistent-object-cache-on-shared-hosting\" class=\"wp-block-heading\">Can You Run a Persistent Object Cache on Shared Hosting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the question most guides to the notice skip, and it is the one that decides what you can actually do. The answer depends entirely on whether your host runs a cache server that your account is allowed to use, and most shared hosting does not.<\/p>\n\n\n\n<h3 id=\"aioseo-our-answer-checked-on-our-own-servers\" class=\"wp-block-heading\">Our Answer, Checked on Our Own Servers<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On AHosting, the answer is no. None of <a href=\"https:\/\/www.ahosting.net\/web-hosting.html\">our shared hosting plans<\/a> or WordPress plans includes a persistent object cache, and we would rather say so here than let the notice imply otherwise. Before writing this guide we checked our shared servers directly, on 10 September 2026: none of them offered Redis or Memcached to customer accounts as a service. An object cache on AHosting means a VPS, where you have root access and run the cache server for your own site.<\/p>\n\n\n\n<h3 id=\"aioseo-why-installing-a-plugin-does-nothing-on-its-own\" class=\"wp-block-heading\">Why Installing a Plugin Does Nothing on Its Own<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Object cache plugins for Redis or Memcached do one job: they install the drop-in file and point it at a server. Install one on a plan with no cache server and there is nowhere for the data to go. Depending on the plugin, the site either carries on without a persistent object cache or reports that it cannot connect. Neither result makes the site faster, and the notice stays.<\/p>\n\n\n\n<h3 id=\"aioseo-never-borrow-a-cache-server-you-did-not-set-up\" class=\"wp-block-heading\">Never Borrow a Cache Server You Did Not Set Up<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One warning belongs in every guide to this notice. If a plugin finds a cache server on the machine and connects to it, check who that server belongs to before you rely on it. A cache server shared between accounts, without its own credentials for each site, means your data and other sites\u2019 data are written into the same place. A persistent object cache you use should be one your host provisions for you, or one you run yourself.<\/p>\n\n\n\n<h2 id=\"aioseo-does-your-site-actually-need-a-persistent-object-cache\" class=\"wp-block-heading\">Does Your Site Actually Need a Persistent Object Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Set the notice aside and ask a different question: how many of your requests reach PHP and the database at all? An object cache only speeds up the requests that do. If most of your visits are served from a page cache, it has very little to work with.<\/p>\n\n\n\n<h3 id=\"aioseo-the-page-cache-comes-first\" class=\"wp-block-heading\">The Page Cache Comes First<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A page cache stores the finished HTML of a page and hands it to the next anonymous visitor without starting WordPress. A persistent object cache stores the pieces WordPress uses while building a page, so it only helps when WordPress runs. The two are separate Site Health tests with separate notices, and we covered the other one in the guide to <a href=\"https:\/\/www.ahosting.net\/blog\/page-cache-is-not-detected\/\">the page cache is not detected notice<\/a>. On <a href=\"https:\/\/www.ahosting.net\/wordpress-hosting.html\">our WordPress plans<\/a> pages are served by LiteSpeed with LSCache, and a page served from LSCache consumes no PHP process at all.<\/p>\n\n\n\n<h3 id=\"aioseo-traffic-an-object-cache-helps\" class=\"wp-block-heading\">Traffic an Object Cache Helps<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Logged-in members, subscribers and students, whose pages are built for them and not served from a page cache.<\/li>\n\n\n\n<li>Store carts, checkouts and account pages, which change for every customer.<\/li>\n\n\n\n<li>A busy admin, with several editors saving and previewing at once.<\/li>\n\n\n\n<li>Heavy REST API or search traffic, where each request runs fresh queries.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If your site does little of this, a persistent object cache would save a few database lookups on requests that were already quick. If it does a lot, the notice is pointing at a real opportunity, whatever the reason it fired. Stores are the common case, which is why <a href=\"https:\/\/www.ahosting.net\/woocommerce-hosting.html\">our WooCommerce plans<\/a> start from a larger allocation: carts and checkouts can never be served from a page cache.<\/p>\n\n\n\n<h3 id=\"aioseo-how-to-measure-it-before-deciding\" class=\"wp-block-heading\">How to Measure It Before Deciding<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The free <a href=\"https:\/\/querymonitor.com\/wordpress-debugging\/how-to-use\/\" target=\"_blank\" rel=\"noopener\">Query Monitor plugin<\/a> shows, on any page, how many database queries it took and whether an external object cache is in use; without one, it reports that an external object cache is not in use. Load a few of your slowest logged-in pages with it active. A page that runs hundreds of queries and repeats many of them is a candidate. A page that runs a few dozen fast ones is not.<\/p>\n\n\n\n<h2 id=\"aioseo-how-to-clear-the-persistent-object-cache-notice-honestly\" class=\"wp-block-heading\">How to Clear the Persistent Object Cache Notice Honestly<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There are three honest outcomes, and only one of them involves a cache server. Start by finding out which limit fired, because the right move depends entirely on that.<\/p>\n\n\n\n<h3 id=\"aioseo-find-which-limit-fired\" class=\"wp-block-heading\">Find Which Limit Fired<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open <a href=\"https:\/\/www.phpmyadmin.net\/\" target=\"_blank\" rel=\"noopener\">phpMyAdmin<\/a> from your hosting control panel, select the site database, and run <code>SELECT TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE();<\/code> to see the same estimates Site Health reads. Then run <code>SELECT post_type, COUNT(*) FROM wp_posts GROUP BY post_type ORDER BY 2 DESC;<\/code> to see what fills the posts table, adjusting the table prefix if yours is not <code>wp_<\/code>. Enter the results in the checker below.<\/p>\n\n\n\n<style>\n.ahoc-tool{background:#0f172a;border-radius:10px;padding:22px;margin:26px 0;color:#fff;font-size:.95rem}\n.ahoc-tool h3{color:#fff;margin:0 0 6px;font-size:1.15rem}\n.ahoc-tool p.ahoc-sub{color:#eef3ff;margin:0 0 18px;font-size:.88rem}\n.ahoc-row{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:14px}\n.ahoc-f{flex:1 1 150px}\n.ahoc-f label{display:block;color:#eef3ff;font-size:.8rem;margin-bottom:5px}\n.ahoc-f select,.ahoc-f input{width:100%;padding:8px;border:1px solid #334155;border-radius:6px;background:#1e293b;color:#fff;font-size:.9rem;box-sizing:border-box}\n.ahoc-btn{background:#2563eb;color:#fff;border:0;border-radius:6px;padding:10px 20px;font-size:.92rem;cursor:pointer;text-decoration:none;display:inline-block}\n.ahoc-out{margin-top:18px;padding:16px;background:#1e293b;border-left:4px solid #2563eb;border-radius:6px;display:none}\n.ahoc-out.ahoc-on{display:block}\n.ahoc-num{font-size:1.15rem;font-weight:700;color:#60a5fa;display:block;margin-bottom:8px}\n.ahoc-out p{margin:0 0 10px;color:#fff}\n.ahoc-out p strong{color:#93c5fd}\n.ahoc-note{color:#94a3b8;font-size:.78rem;margin-top:12px}\n<\/style>\n<div class=\"ahoc-tool\" data-ahoc=\"checker\">\n  <h3>Persistent Object Cache Threshold Checker<\/h3>\n  <p class=\"ahoc-sub\">Enter the counts from the queries above. This applies the WordPress 7.1.2 limits and tells you which one fires first.<\/p>\n  <div class=\"ahoc-row\">\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-ms\">Multisite network<\/label>\n      <select id=\"ahoc-ms\">\n        <option value=\"no\" selected>No<\/option>\n        <option value=\"yes\">Yes<\/option>\n      <\/select>\n    <\/div>\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-ac\">Autoloaded options<\/label>\n      <input id=\"ahoc-ac\" type=\"number\" min=\"0\" value=\"0\">\n    <\/div>\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-ab\">Autoloaded bytes<\/label>\n      <input id=\"ahoc-ab\" type=\"number\" min=\"0\" value=\"0\">\n    <\/div>\n  <\/div>\n  <div class=\"ahoc-row\">\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-po\">Posts table rows<\/label>\n      <input id=\"ahoc-po\" type=\"number\" min=\"0\" value=\"0\">\n    <\/div>\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-op\">Options table rows<\/label>\n      <input id=\"ahoc-op\" type=\"number\" min=\"0\" value=\"0\">\n    <\/div>\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-co\">Comments table rows<\/label>\n      <input id=\"ahoc-co\" type=\"number\" min=\"0\" value=\"0\">\n    <\/div>\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-te\">Terms table rows<\/label>\n      <input id=\"ahoc-te\" type=\"number\" min=\"0\" value=\"0\">\n    <\/div>\n    <div class=\"ahoc-f\">\n      <label for=\"ahoc-us\">Users table rows<\/label>\n      <input id=\"ahoc-us\" type=\"number\" min=\"0\" value=\"0\">\n    <\/div>\n  <\/div>\n  <button class=\"ahoc-btn wp-element-button\" id=\"ahoc-go\" type=\"button\">Check my counts<\/button>\n  <div class=\"ahoc-out\" id=\"ahoc-out\">\n    <span class=\"ahoc-num\" id=\"ahoc-num\">&#8212;<\/span>\n    <p><strong>Tripped by:<\/strong> <span id=\"ahoc-why\"><\/span><\/p>\n    <p><strong>Do this first:<\/strong> <span id=\"ahoc-first\"><\/span><\/p>\n    <p class=\"ahoc-note\">This mirrors the default limits and cannot see your site. A plugin or host can change the limits through a filter, and the table counts Site Health reads are estimates.<\/p>\n  <\/div>\n<\/div>\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var tool = document.querySelector('[data-ahoc]');\n    if (!tool) { return; }\n    var mode = tool.getAttribute('data-ahoc');\n    if (mode !== 'checker') { return; }\n    var go = document.getElementById('ahoc-go');\n    if (!go) { return; }\n    var out = document.getElementById('ahoc-out');\n    if (!out) { return; }\n    var num = document.getElementById('ahoc-num');\n    if (!num) { return; }\n    var why = document.getElementById('ahoc-why');\n    if (!why) { return; }\n    var first = document.getElementById('ahoc-first');\n    if (!first) { return; }\n    function val(id) {\n      var el = document.getElementById(id);\n      if (!el) { return 0; }\n      var n = parseInt(el.value, 10);\n      if (isNaN(n)) { return 0; }\n      return n;\n    }\n    var FIX = {};\n    FIX['ms'] = 'Nothing to reduce. Every network gets this notice, so decide on traffic alone whether a cache server is worth running.';\n    FIX['ac'] = 'Find the plugins that autoload the most options and switch off the ones you no longer use.';\n    FIX['ab'] = 'Look for a few very large autoloaded options. One oversized entry often accounts for most of the bytes.';\n    FIX['po'] = 'Group the posts table by post type. Revisions and media are usually most of it, and revisions can be capped.';\n    FIX['op'] = 'Expired transients and options left behind by removed plugins are the usual bulk.';\n    FIX['co'] = 'Spam and trashed comments count too. Empty both, then refresh the table statistics.';\n    FIX['te'] = 'Tags are the usual bulk. Merging near duplicates reduces the count and helps readers as well.';\n    FIX['us'] = 'A site with open registration or a store with customer accounts crosses this honestly. That traffic is also the kind an object cache helps.';\n    var LABEL = {};\n    LABEL['ms'] = 'the site is a multisite network';\n    LABEL['ac'] = 'more than 500 autoloaded options';\n    LABEL['ab'] = 'more than 100,000 bytes of autoloaded options';\n    LABEL['po'] = '1,000 or more rows in the posts table';\n    LABEL['op'] = '1,000 or more rows in the options table';\n    LABEL['co'] = '1,000 or more rows in the comments table';\n    LABEL['te'] = '1,000 or more rows in the terms table';\n    LABEL['us'] = '1,000 or more rows in the users table';\n    go.addEventListener('click', function(){\n      var ms = document.getElementById('ahoc-ms');\n      if (!ms) { return; }\n      var hit = '';\n      if (ms.value === 'yes') { hit = 'ms'; }\n      if (hit === '') { if (val('ahoc-ac') > 500) { hit = 'ac'; } }\n      if (hit === '') { if (val('ahoc-ab') > 100000) { hit = 'ab'; } }\n      if (hit === '') { if (val('ahoc-co') >= 1000) { hit = 'co'; } }\n      if (hit === '') { if (val('ahoc-op') >= 1000) { hit = 'op'; } }\n      if (hit === '') { if (val('ahoc-po') >= 1000) { hit = 'po'; } }\n      if (hit === '') { if (val('ahoc-te') >= 1000) { hit = 'te'; } }\n      if (hit === '') { if (val('ahoc-us') >= 1000) { hit = 'us'; } }\n      if (hit === '') {\n        num.innerHTML = 'A persistent object cache is not required';\n        why.innerHTML = 'none of the seven limits. These counts would not print the recommendation.';\n        first.innerHTML = 'If Site Health still shows it, the estimate it reads is higher than your count. Refresh the table statistics and check again.';\n      } else {\n        num.innerHTML = 'You should use a persistent object cache';\n        why.innerHTML = LABEL[hit] + '. The test stops at the first limit it finds, so others may also be over.';\n        first.innerHTML = FIX[hit];\n      }\n      out.className = 'ahoc-out ahoc-on';\n    });\n  });\n})();\n<\/script>\n\n\n\n<h3 id=\"aioseo-three-ways-to-resolve-it\" class=\"wp-block-heading\">Three Ways to Resolve It<\/h3>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>Option<\/th><th>What it changes<\/th><th>Choose it when<\/th><\/tr><\/thead><tbody><tr><td>Reduce the counts<\/td><td>Caps and clears revisions, spam, expired transients and unused autoloaded options, then refreshes the table statistics<\/td><td>A limit fired because of history the site no longer needs<\/td><\/tr><tr><td>Record the decision in code<\/td><td>Tells Site Health you have decided the recommendation does not apply<\/td><td>Your traffic is mostly cached, you have measured, and no cache server is available<\/td><\/tr><tr><td>Add a real cache server<\/td><td>Runs Redis or Memcached for your site and installs a drop-in that connects to it<\/td><td>Much of your traffic reaches PHP and your pages repeat queries<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Three honest ways to resolve You should use a persistent object cache. Installing a plugin with no server behind it is not on the list, because it changes nothing.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-reducing-the-counts\" class=\"wp-block-heading\">Reducing the Counts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For the posts table, cap revisions and clear the old ones; for the comments table, empty spam and trash; for the options table, clear expired transients and remove options left behind by deleted plugins. Then refresh the estimate, because the catalog figure may not move on its own straight away. In phpMyAdmin, the table\u2019s Operations tab offers Analyze table, which refreshes the statistics the estimate comes from.<\/p>\n\n\n\n<h3 id=\"aioseo-recording-the-decision-in-code\" class=\"wp-block-heading\">Recording the Decision in Code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Core provides a filter for sites that have weighed the recommendation and decided against it. A one-line must-use plugin containing <code>add_filter( 'site_status_should_suggest_persistent_object_cache', '__return_false' );<\/code> makes the test report that a persistent object cache is not required. Use it only after the measurement above. It changes the notice, not the site, and it hides the notice on a day your traffic grows into it.<\/p>\n\n\n\n<h2 id=\"aioseo-when-a-persistent-object-cache-is-worth-moving-for\" class=\"wp-block-heading\">When a Persistent Object Cache Is Worth Moving For<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the measurement says your slow pages are the logged-in, cart or admin kind, and they repeat the same queries, then the notice is right about your site even if it fired for the wrong reason. The fix at that point is a cache server that belongs to you, sized for the site, with a drop-in connecting WordPress to it.<\/p>\n\n\n\n<h3 id=\"aioseo-where-the-work-stops-being-yours\" class=\"wp-block-heading\">Where the Work Stops Being Yours<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">That is the part we take off your hands. <a href=\"https:\/\/www.ahosting.net\/vps-hosting.html\">An AHosting VPS<\/a> is a KVM virtual machine with guaranteed CPU and memory and full root access, so you can run Redis or Memcached for your site alone rather than hoping a shared server offers one. Everything before this point, the counts, the revisions and the measurement, is yours to check, and this guide covers all of it. If you are weighing the move for other reasons too, our guide to <a href=\"https:\/\/www.ahosting.net\/blog\/wordpress-vps-hosting-upgrade\/\">the signs a WordPress site has outgrown shared hosting<\/a> covers the rest of the decision.<\/p>\n\n\n\n<h3 id=\"aioseo-a-short-checklist\" class=\"wp-block-heading\">A Short Checklist<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Read the notice as a size warning. Nothing in it measures speed.<\/li>\n\n\n\n<li>Run the two queries above and find which of the seven limits fired.<\/li>\n\n\n\n<li>If it is revisions, spam or stale options, clean them up and refresh the table statistics.<\/li>\n\n\n\n<li>Measure your slowest logged-in pages before deciding a cache server is worth having.<\/li>\n\n\n\n<li>Never point a plugin at a cache server that you did not set up and that is not yours alone.<\/li>\n\n\n\n<li>If the traffic justifies it, run a persistent object cache on a server that is yours.<\/li>\n<\/ol>\n\n\n\n<h2 id=\"faq-you-should-use-a-persistent-object-cache\" class=\"wp-block-heading\">Frequently Asked Questions About the Persistent Object Cache Notice<\/h2>\n\n\n\n<h3 id=\"faq-is-the-persistent-object-cache-warning-necessary-to-fix\" class=\"wp-block-heading\">Is the persistent object cache warning in Site Health necessary to fix?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In practice it is a recommendation, not a fault, and many sites can leave it. Site Health shows it when a database table or the set of autoloaded options crosses a fixed size, not when anything is slow or broken. So the first question is whether your site sends much traffic that a page cache cannot serve, such as logged-in members, carts or a busy admin. If most visitors are anonymous and your pages are cached, the benefit of an object cache is small and the notice can wait.<\/p>\n\n\n\n<h3 id=\"faq-why-does-site-health-say-i-should-use-a-persistent-object-cache-in-2026\" class=\"wp-block-heading\">Why does Site Health say I should use a persistent object cache in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Specifically because one of seven counters crossed its line. Every multisite network gets the notice. On a single site it appears when more than 500 options are autoloaded, when those options exceed 100,000 bytes, or when the posts, comments, options, terms or users table reaches 1,000 rows. The test has worked this way since WordPress 6.1 and is unchanged in 7.1.2. It measures size, never speed, and it only runs on sites whose environment type is production.<\/p>\n\n\n\n<h3 id=\"faq-can-i-use-a-persistent-object-cache-on-ahosting-shared-hosting\" class=\"wp-block-heading\">Can I use a persistent object cache on AHosting shared or WordPress hosting?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">That said, the honest answer is no. A persistent object cache needs a cache server such as Redis or Memcached that your site connects to, and none of the AHosting shared or WordPress plans includes one. We checked our shared servers directly before writing this. A plugin on its own cannot supply the server. If your site genuinely needs one, it means a VPS where you have root access and can run the cache server yourself, and the rest of this guide explains how to tell whether it does.<\/p>\n\n\n\n<h3 id=\"faq-persistent-object-cache-vs-page-cache-which-does-my-site-need\" class=\"wp-block-heading\">Persistent object cache vs page cache: which one does my WordPress site need?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typically the page cache first, because it helps more visitors for less effort. A page cache stores the finished HTML, so an anonymous visitor is served without WordPress running at all. An object cache stores the results of database lookups between requests, so WordPress runs faster when it has to run. Sites with mostly anonymous traffic get most of their gain from the page cache. Membership sites, stores and busy editorial teams send traffic a page cache cannot serve, and that is where an object cache earns its place.<\/p>\n\n\n\n<h3 id=\"faq-redis-vs-memcached-for-a-wordpress-persistent-object-cache\" class=\"wp-block-heading\">Redis vs Memcached for a WordPress persistent object cache: does the choice matter?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typically much less than people expect. Both are in-memory servers that WordPress reaches through a drop-in file and a plugin that provides it, and either one removes the repeated database lookups the notice is about. Redis can also write its data to disk and supports richer data types, which some teams want for other reasons. For a WordPress object cache the decision that matters more is having a server that is yours alone, sized for the site, and a well maintained plugin.<\/p>\n\n\n\n<h3 id=\"faq-why-does-my-small-blog-trigger-the-persistent-object-cache-notice\" class=\"wp-block-heading\">Why does my small blog trigger the persistent object cache recommendation?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In particular because the posts table is not a count of your posts. WordPress stores sixteen kinds of content in that one table, including every saved revision, every image and file in the media library, menu items, templates and cached embeds. Revisions are unlimited by default. A blog with a modest number of articles can therefore pass 1,000 rows without anyone noticing, and the count the test reads is an estimate from the database rather than an exact figure.<\/p>\n\n\n\n<h3 id=\"faq-does-installing-a-redis-plugin-clear-the-warning-on-shared-hosting-2026\" class=\"wp-block-heading\">Does installing a Redis plugin clear the warning on shared hosting in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In fact not by itself, because the plugin is only a connector. It installs a drop-in file that tells WordPress to keep its cache in Redis, and it needs a Redis server to connect to. Without one there is nothing to store data in. Never point a plugin at a cache server that you did not set up and that is not yours alone, because a shared cache means your site and other sites write into the same place. Ask your host what is actually provisioned first.<\/p>\n\n\n\n<h3 id=\"faq-what-does-your-host-appears-to-support-redis-mean\" class=\"wp-block-heading\">What does your host appears to support Redis mean in Site Health?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notably it means less than it sounds. WordPress checks whether PHP has loaded the client library for APCu, Redis, Relay, Memcache or Memcached, and names each one it finds. It never checks whether a cache server is running or whether your account may use one. A host can install a client library for its own reasons on a server where no cache service is offered to customers. Treat the line as a clue to ask about, not as confirmation that a cache is available to you.<\/p>\n\n\n\n<h3 id=\"faq-when-is-an-ahosting-vps-worth-it-for-a-persistent-object-cache-2026\" class=\"wp-block-heading\">When is it worth moving to an AHosting VPS for a persistent object cache in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ultimately when your slow requests are ones a page cache cannot serve. Logged-in members, WooCommerce carts and checkouts, a busy admin and heavy REST traffic all reach PHP and the database on every request, and those are what an object cache speeds up. An AHosting VPS gives you root access, so you can run Redis or Memcached for your site alone. If your traffic is mostly anonymous and cached, a VPS for this reason alone is money spent on a notice rather than on speed.<\/p>\n\n\n\n<h3 id=\"faq-does-ahosting-litespeed-caching-replace-an-object-cache\" class=\"wp-block-heading\">Does AHosting LiteSpeed caching replace the need for an object cache?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Indeed for anonymous visitors it covers most of the same ground, and it is worth being clear about where it stops. AHosting WordPress plans run LiteSpeed with LSCache, and a page served from LSCache never starts PHP, so it needs no object cache at all. A logged-in session is not served from the page cache, so those requests still reach PHP and the database. If most of your visitors are logged in, the page cache helps them little and the notice deserves a closer look.<\/p>\n\n\n\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var allH3s = document.querySelectorAll('h3.wp-block-heading');\n    var inFaq = false;\n    for (var i = 0; i < allH3s.length; i++) {\n      var h3 = allH3s[i];\n      var prev = h3.previousElementSibling;\n      if (prev) {\n        if (prev.tagName === 'H2') {\n          var prevId = prev.getAttribute('id');\n          if (prevId) {\n            if (prevId.indexOf('faq-') === 0) {\n              inFaq = true;\n            } else {\n              inFaq = false;\n            }\n          }\n        }\n      }\n      if (inFaq) {\n        initToggle(h3);\n      }\n    }\n    function initToggle(h3) {\n      var answer = h3.nextElementSibling;\n      if (!answer) { return; }\n      if (answer.tagName !== 'P') { return; }\n      answer.style.display = 'none';\n      h3.style.cursor = 'pointer';\n      h3.setAttribute('tabindex', '0');\n      h3.setAttribute('aria-expanded', 'false');\n      h3.addEventListener('click', function(){\n        toggleOne(h3, answer);\n      });\n      h3.addEventListener('keydown', function(ev){\n        if (ev.key === 'Enter') { toggleOne(h3, answer); }\n        if (ev.key === ' ') { ev.preventDefault(); toggleOne(h3, answer); }\n      });\n    }\n    function toggleOne(h3, answer) {\n      var open = h3.getAttribute('aria-expanded') === 'true';\n      if (open) {\n        answer.style.display = 'none';\n        h3.setAttribute('aria-expanded', 'false');\n      } else {\n        answer.style.display = 'block';\n        h3.setAttribute('aria-expanded', 'true');\n      }\n    }\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR Site Health recommends a persistent object cache when your site crosses a size line, not when it is slow. Any one of seven counters is enough: a multisite network, more than 500 autoloaded options or 100,000 bytes of them, or 1,000 rows in the posts, comments, options, terms or users table. Revisions and media [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1336,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[8],"tags":[68,238,297,110,276,183,113,131],"class_list":["post-1334","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-caching","tag-database-optimization","tag-persistent-object-cache","tag-shared-hosting","tag-site-health","tag-vps-hosting","tag-wordpress-errors","tag-wordpress-performance"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Matt Chrust\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"AHosting Blog | WordPress Hosting Tips &amp; Guides\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Persistent Object Cache Warning in Site Health | AHosting\" \/>\n\t\t<meta property=\"og:description\" content=\"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-25T17:18:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-25T17:18:42+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@ahostingdotnet\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Persistent Object Cache Warning in Site Health | AHosting\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@ahostingdotnet\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#article\",\"name\":\"Persistent Object Cache Warning in Site Health | AHosting\",\"headline\":\"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures\",\"author\":{\"@type\":\"Person\",\"name\":\"Matt Chrust\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/you-should-use-a-persistent-object-cache-ahosting.jpg\",\"width\":1200,\"height\":675,\"caption\":\"Site Health recommends a persistent object cache when one of seven size limits is crossed. None of them measures how fast your site is.\"},\"datePublished\":\"2026-09-25T17:18:38+00:00\",\"dateModified\":\"2026-09-25T17:18:42+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#webpage\"},\"articleSection\":\"WordPress, Caching, database optimization, persistent object cache, Shared Hosting, Site Health, VPS hosting, WordPress errors, wordpress performance\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"position\":2,\"name\":\"WordPress\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#listItem\",\"name\":\"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#listItem\",\"position\":3,\"name\":\"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"},\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/\"}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\",\"name\":\"AHosting\",\"description\":\"WordPress Hosting Tips & Guides\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/assets\\\/img\\\/ahosting-logo.svg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#organizationLogo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/ahostingdotnet\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\",\"name\":\"Matt Chrust\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Matt Chrust\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#webpage\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/\",\"name\":\"Persistent Object Cache Warning in Site Health | AHosting\",\"description\":\"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/you-should-use-a-persistent-object-cache-ahosting.jpg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#mainImage\",\"width\":1200,\"height\":675,\"caption\":\"Site Health recommends a persistent object cache when one of seven size limits is crossed. None of them measures how fast your site is.\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/you-should-use-a-persistent-object-cache\\\/#mainImage\"},\"datePublished\":\"2026-09-25T17:18:38+00:00\",\"dateModified\":\"2026-09-25T17:18:42+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#website\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"name\":\"AHosting\",\"description\":\"WordPress Hosting Tips & Guides\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Persistent Object Cache Warning in Site Health | AHosting","description":"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.","canonical_url":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#article","name":"Persistent Object Cache Warning in Site Health | AHosting","headline":"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures","author":{"@type":"Person","name":"Matt Chrust","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/"},"publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg","width":1200,"height":675,"caption":"Site Health recommends a persistent object cache when one of seven size limits is crossed. None of them measures how fast your site is."},"datePublished":"2026-09-25T17:18:38+00:00","dateModified":"2026-09-25T17:18:42+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#webpage"},"isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#webpage"},"articleSection":"WordPress, Caching, database optimization, persistent object cache, Shared Hosting, Site Health, VPS hosting, WordPress errors, wordpress performance"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/www.ahosting.net\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","position":2,"name":"WordPress","item":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#listItem","name":"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#listItem","position":3,"name":"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures","previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"},"item":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/"}]},{"@type":"Organization","@id":"https:\/\/www.ahosting.net\/#organization","name":"AHosting","description":"WordPress Hosting Tips & Guides","url":"https:\/\/www.ahosting.net\/","logo":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/assets\/img\/ahosting-logo.svg","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#organizationLogo"},"image":{"@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#organizationLogo"},"sameAs":["https:\/\/x.com\/ahostingdotnet"]},{"@type":"Person","@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/","name":"Matt Chrust","image":{"@type":"ImageObject","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g","width":96,"height":96,"caption":"Matt Chrust"}},{"@type":"WebPage","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#webpage","url":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/","name":"Persistent Object Cache Warning in Site Health | AHosting","description":"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#breadcrumblist"},"author":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"creator":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg","@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#mainImage","width":1200,"height":675,"caption":"Site Health recommends a persistent object cache when one of seven size limits is crossed. None of them measures how fast your site is."},"primaryImageOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/#mainImage"},"datePublished":"2026-09-25T17:18:38+00:00","dateModified":"2026-09-25T17:18:42+00:00"},{"@type":"WebSite","@id":"https:\/\/www.ahosting.net\/#website","url":"https:\/\/www.ahosting.net\/","name":"AHosting","description":"WordPress Hosting Tips & Guides","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"}}]},"og:locale":"en_US","og:site_name":"AHosting Blog | WordPress Hosting Tips &amp; Guides","og:type":"article","og:title":"Persistent Object Cache Warning in Site Health | AHosting","og:description":"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.","og:url":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/","og:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg","og:image:secure_url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg","og:image:width":1200,"og:image:height":675,"article:published_time":"2026-09-25T17:18:38+00:00","article:modified_time":"2026-09-25T17:18:42+00:00","twitter:card":"summary_large_image","twitter:site":"@ahostingdotnet","twitter:title":"Persistent Object Cache Warning in Site Health | AHosting","twitter:description":"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.","twitter:creator":"@ahostingdotnet","twitter:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/09\/you-should-use-a-persistent-object-cache-ahosting.jpg"},"aioseo_meta_data":{"post_id":"1334","title":"Persistent Object Cache Warning in Site Health | AHosting","description":"Site Health says you should use a persistent object cache? It counts table rows, not speed. Here are the seven limits, and what works on shared hosting.","keywords":null,"keyphrases":{"focus":{"keyphrase":"persistent object cache","score":0,"analysis":[]},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-09-25 17:15:20","updated":"2026-09-25 17:20:02","seo_analyzer_scan_date":null,"focus_keyword":"persistent object cache","additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/\" title=\"WordPress\">WordPress<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tYou Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.ahosting.net\/blog\/"},{"label":"WordPress","link":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/"},{"label":"You Should Use a Persistent Object Cache: What WordPress Site Health Actually Measures","link":"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/"}],"_links":{"self":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/comments?post=1334"}],"version-history":[{"count":1,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1334\/revisions"}],"predecessor-version":[{"id":1337,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1334\/revisions\/1337"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media\/1336"}],"wp:attachment":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media?parent=1334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/categories?post=1334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/tags?post=1334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}