{"id":22170,"date":"2026-11-05T15:00:00","date_gmt":"2026-11-05T14:00:00","guid":{"rendered":"https:\/\/webhosting.de\/?p=22170"},"modified":"2026-11-05T07:23:23","modified_gmt":"2026-11-05T06:23:23","slug":"wordpress-object-cache-hit-rate","status":"publish","type":"post","link":"https:\/\/webhosting.de\/en\/wordpress-object-cache-hit-rate\/","title":{"rendered":"WordPress Object Cache Hit Rate: Significance and Meaningful Target Values"},"content":{"rendered":"<div class=\"wh-article\" data-wh-layout=\"2.1.2\" style=\"width:100%;max-width:820px;margin:0 auto;color:#263b4b;font-family:inherit;font-size:18px;line-height:1.8;text-align:start;overflow-wrap:break-word;box-sizing:border-box\"><p class=\"wh-lead\" style=\"font-size:20px;line-height:1.7;color:#233746;margin:0 0 1.1em\">The WordPress Object Cache hit rate shows what percentage of cached requests result in a match. <strong style=\"font-weight:700;color:inherit\">There is no universally applicable target value.<\/strong> Furthermore, a Redis hit rate does not automatically measure the same thing as the metric displayed by a WordPress plugin. The rate only becomes meaningful once the measurement scope, time period, and number of requests are known. Compare it with response times for important queries, database load, and error rates: This way, you can tell whether a change to your website actually helps, rather than just improving a percentage.  <\/p>\n<nav class=\"wh-toc\" aria-label=\"Contents of this article\" style=\"display:block;margin:28px 0 38px;padding:22px;border:1px solid #d9e4e8;border-radius:14px;background:#f4f8f8\"><p class=\"wh-toc-title\" style=\"font-size:13px;font-weight:700;letter-spacing:.08em;color:#49656b;margin:0 0 14px\">Go directly to the section<\/p><div class=\"wh-toc-grid\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px\"><div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#object-cache-grundlagen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">What the WordPress Object Cache Stores<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#cache-ebenen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Distinguishing Between the Object Cache and the Page Cache<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#hit-rate-grundlagen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">What Hits and Misses Tell Us<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#messung-vorbereiten\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Carefully check the measurement range and access<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#intervall-berechnen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Calculate the Redis Hit Rate Over a Given Interval<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#messprotokoll-kennzahlen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Measurement Report and Redis Metrics<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#szenarien-einordnen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Cold Start, Online Store, and Static Website<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#fehlersuche-betrieb\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Investigate Unusual Values and Errors<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#zielwerte-entscheidung\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Set Your Own Meaningful Target Values<\/a><\/div>\n<\/div><\/nav><section class=\"wh-section\" aria-labelledby=\"object-cache-grundlagen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"object-cache-grundlagen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">What the WordPress Object Cache Stores<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The <strong style=\"font-weight:700;color:inherit\">WordPress Object Cache<\/strong> stores data under a key and within a group. If WordPress requests the same value again, it can retrieve it from the cache instead of performing the underlying work again. This includes, for example, data that would otherwise have to be read from the database or recalculated. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The built-in Core implementation is, by default, <strong style=\"font-weight:700;color:inherit\">request-bound<\/strong>: It stores its entries for the duration of a single request. This means that a subsequent page view does not automatically have access to the previously stored values. Nevertheless, the cache can prevent repeated accesses even within a single request. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A drop-in can replace the core implementation with a <strong style=\"font-weight:700;color:inherit\">Persistent Object Cache<\/strong> replace. This allows appropriate entries to be retained beyond individual requests. Redis is one possible backend option, but it is not a requirement for WordPress; other backend approaches are also possible. Even with a persistent drop-in, certain groups can still apply only to the current request. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Transients are another way to store data that is needed for a limited time. With a persistent object cache, they can be stored there instead of in the database. Their expiration time does not indicate a guaranteed minimum availability: a value may disappear sooner. Application code must therefore account for the possibility that a transient may be missing and be able to regenerate the value if necessary.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">This distinction is crucial for evaluating the hit rate later on: Accessing the local cache during a request and accessing an external backend are not necessarily the same metric. Therefore, first check which implementation is actually being used and which data it stores persistently.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"cache-ebenen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"cache-ebenen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Distinguishing Between the Object Cache and the Page Cache<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">When a page is loaded, a <strong style=\"font-weight:700;color:inherit\">Page Cache<\/strong> serve a page response that has already been generated. If the request is fulfilled there, it does not have to go through the same WordPress application path as an uncached request. The Object Cache, on the other hand, works within the application with individual cached data items, not with the entire page response. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Imagine a publicly accessible article page: If its response is stored in the page cache, it can be served immediately. If, on the other hand, WordPress has to generate the page, the object cache can help with repeated data accesses. The amount of work this actually saves depends on the request, the cached entries, and the specific implementation. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">This has implications for interpretation: A good object cache rate only describes the cache hits that have been recorded. It does not directly indicate how many visitors are already receiving a pre-generated response from the page cache or how quickly the entire website responds. With extensive page caching, the benefits of the object cache become particularly evident in the remaining WordPress requests.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Browser and opcode caches also serve other purposes. The browser cache stores resources locally on the visitor's device; a PHP opcode cache stores compiled PHP code. Neither of these replaces the storage of individual application data in the object cache nor the delivery of a complete response from a page cache.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The Constant <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">WP_CACHE<\/code> This alone does not enable a Redis object cache. For a persistent object cache, you need a suitable implementation and its supported configuration. You can find an additional example of how multiple layers interact in the post on <a href=\"https:\/\/webhosting.de\/en\/cloudlinux-acceleratewp-cache-engine-wordpress-performance-boost\/\">AccelerateWP Cache Engine<\/a>.  <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"hit-rate-grundlagen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"hit-rate-grundlagen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">What Hits and Misses Tell Us<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A <strong style=\"font-weight:700;color:inherit\">Hit<\/strong> occurs when a requested entry is found at the cache level being considered. A <strong style=\"font-weight:700;color:inherit\">Miss<\/strong> means that it cannot be found there. The hit rate is calculated by dividing the number of hits by the total number of hits and misses: Hits \/ (Hits + Misses) \u00d7 100. If there are neither hits nor misses, the rate for that time period is undefined. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">An error is not automatically a technical error. An entry may still be missing during the first access; even after it has expired, it may need to be reacquired or regenerated. What matters is what consequences such failed attempts have in the specific process and whether it makes sense to repeat the access attempts at all.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">WordPress's core method counts cache hits and misses in its own implementation. However, a drop-in can replace this implementation. Therefore, it\u2019s not possible to reliably deduce from the core counting method what a plugin\u2019s metrics capture: For the version you\u2019re using, check which page views and which time period its metrics cover.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Redis reports with <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">keyspace_hits<\/code> and <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">keyspace_misses<\/code> successful or unsuccessful key lookups in the Redis keyspace. Even a failed <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">EXISTS<\/code>-A call can count as a foul. This <strong style=\"font-weight:700;color:inherit\">Redis Hit Rate<\/strong> Therefore, it is not automatically equivalent to a WordPress or plugin quota. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If a Redis instance serves multiple websites or applications, its counters may collectively reflect traffic from all of them. Without appropriate, separate telemetry data, a global quota cannot be reliably attributed to a single WordPress website. For any comparison, you should therefore document which level and which instance the numbers actually describe.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"messung-vorbereiten\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"messung-vorbereiten\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Carefully check the measurement range and access<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Before taking any measurements, determine which object cache implementation WordPress is using. If WP-CLI is available and you have access to the WordPress directory, you can run a read-only audit there using the following command: <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">wp cache type<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The result helps in assessing the implementation, but does not prove that every relevant access is stored persistently. WordPress allows a drop-in to replace the core cache; at the same time, individual groups may not be stored persistently. Therefore, be sure to note the drop-in or plugin used and its version.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Check the documentation for the specific version to see which accesses are included in the displayed hits and misses, and over what time period they are counted. A plugin metric can only be meaningfully compared to another metric if the measurement scope and counting method are known. It is particularly important to know whether the metric describes a single request or a longer time window.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For Redis, provided you have a connection and the necessary permissions, you can query statistics and memory information in read-only mode from a Redis CLI session. The following commands intentionally do not include any credentials: <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Code<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-redis\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">INFO stats\nINFO memory<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Document the <strong style=\"font-weight:700;color:inherit\">Measuring range<\/strong>: Which instances or nodes were queried, and which other websites or applications use them? Global Redis counters cannot be easily attributed to a single website when they are shared. Check the output for sensitive operational information before sharing it; neither a flush nor a load test is required for this inventory.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If you don't have access to the Redis CLI, ask your hosting provider about the available metrics and their scope. Even a dashboard is only a useful reference if it's clear whether it shows the same instance, individual nodes, or already aggregated values.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"intervall-berechnen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"intervall-berechnen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Calculate the Redis Hit Rate Over a Given Interval<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Redis statistics are count values, not a definitive statement about a specific measurement period. For an interval analysis, read the values for <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">keyspace_hits<\/code> and <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">keyspace_misses<\/code> at the beginning and end of the same time window, from the same instance. Make a note of both times and the corresponding instance so that the readings match.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Next, subtract the initial value from the final value for each counter. The <strong style=\"font-weight:700;color:inherit\">Interval Hit Rate<\/strong> is calculated as: \u0394Hits \/ (\u0394Hits + \u0394Misses) \u00d7 100. The symbol \u0394 represents the respective difference. If both differences are zero, no lookups were counted in this window; in that case, the ratio is undefined rather than zero percent.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">An illustrative calculation, not an actual measurement: If hits increase by 900 and misses by 100, this results in 90 percent out of a total of 1,000 counted lookups. This does not mean that pages are 90 percent faster, nor that exactly 900 database queries were saved. Redis counts key lookups; their significance for the application depends on the specific access.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If one of the counters decreases between readings, the simple difference calculated using this fraction is not valid. This can be caused by a restart or a reset of statistics. Restart the measurement window or split it at the break point based on reliable operating data, rather than substituting a negative value into the formula.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If there are multiple nodes, first calculate the differences for each relevant node over the same time period. Then add up the hits and misses separately and use those totals to calculate the overall ratio. An unweighted average of the individual percentages treats a node with few lookups the same as one with many; this can significantly distort the overall picture.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Keep track of which nodes are actually included and what role they play in the environment. An overall rate calculated in this way describes only the selected counters and their users; it does not, on its own, result in a specific WordPress Object Cache quota.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"messprotokoll-kennzahlen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"messprotokoll-kennzahlen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Measurement Report and Redis Metrics<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">In addition to hits and misses, other Redis counters help with classification. Here, too, differences within the selected time period are more meaningful than isolated total figures. The following table distinguishes between the significance of the values and the conclusions that cannot be drawn from them alone.   <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Redis Metrics and the Limits of Their Interpretation\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Redis Metrics and the Limits of Their Interpretation<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Key figure<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Meaning<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Limits of Interpretation<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">keyspace_hits<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Successful Key Lookups<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">No direct evidence of reduced database queries or faster page loads.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">keyspace_misses<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Failed Key Lookups<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Even a failed EXISTS can count; a \"Miss\" isn't automatically an error.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">expired_keys<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Broken Keys<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">An increase alone does not prove that the service life was chosen incorrectly.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">evicted_keys<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Keys Displaced Due to the Memory Limit<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Check this in relation to memory limits and eviction configuration; this does not automatically indicate a specific cause for slow requests.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">An increase of <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">expired_keys<\/code> may be a reason to take a closer look at lifespans and access patterns. However, it does not show whether an entry was needed again shortly after it expired. Likewise, <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">evicted_keys<\/code> to consider this in the context of the configured storage limit and replacement strategy, rather than immediately concluding that storage capacity needs to be increased.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A useful <strong style=\"font-weight:700;color:inherit\">Test Report<\/strong> Specify the start and end of the time window, the instance or node, the two counter differences, their sum, and the calculated ratio. Also note whether the instance is shared and whether a restart or reset occurred during the window. This ensures that measurements remain traceable later on.<\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail1\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/cache-messprotokoll-zeitfenster-b3a40a50-detail1-a1decd586e-1024x683.webp\" class=\"wp-image-22173\" alt=\"An AI-generated stock image of a notebook with a pen and an analog alarm clock on a worn desk.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/cache-messprotokoll-zeitfenster-b3a40a50-detail1-a1decd586e-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/cache-messprotokoll-zeitfenster-b3a40a50-detail1-a1decd586e-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/cache-messprotokoll-zeitfenster-b3a40a50-detail1-a1decd586e-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/cache-messprotokoll-zeitfenster-b3a40a50-detail1-a1decd586e-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/cache-messprotokoll-zeitfenster-b3a40a50-detail1-a1decd586e.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail1\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">AI-generated illustrative image: A recorded time window is part of a verifiable measurement log.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Simultaneously record the request type in question and an appropriate latency metric, as well as database load and error rate. For example, distinguish between public page views and requests from logged-in users if relevant data is available. The Redis quota alone does not reveal which of these request types benefited from a hit.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For later comparison, the time period, nodes, and request mix should be as similar as possible. Also, note any relevant changes and noticeable warm-up phases. Where data is missing or a shared instance does not allow for assignment, this limitation should be noted in the log rather than included in a seemingly precise conclusion.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"szenarien-einordnen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"szenarien-einordnen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Cold Start, Online Store, and Static Website<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">After a restart or deployment, required entries may initially be missing. Such misses are to be expected while the cache is being populated; the hit rate may subsequently increase with repeated accesses. Values from the <strong style=\"font-weight:700;color:inherit\">Cold and Warm Phases<\/strong> You should consider these separately so that a long-term average doesn't obscure either the initial costs or the subsequent performance. <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail2\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/object-cache-kaltphase-warmphase-b3a40a50-detail2-8356419081-1024x683.webp\" class=\"wp-image-22174\" alt=\"AI-generated illustration of a less-filled and a more-filled cache slot for the cold and hot phases of the cache.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/object-cache-kaltphase-warmphase-b3a40a50-detail2-8356419081-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/object-cache-kaltphase-warmphase-b3a40a50-detail2-8356419081-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/object-cache-kaltphase-warmphase-b3a40a50-detail2-8356419081-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/object-cache-kaltphase-warmphase-b3a40a50-detail2-8356419081-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/object-cache-kaltphase-warmphase-b3a40a50-detail2-8356419081.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail2\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">AI-generated illustration: Viewing the cold and warm phases separately prevents the average from masking the ramp-up time.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Dynamic requests are particularly interesting in the context of an online store or a logged-in area: A page cache does not necessarily handle every shopping cart or account request. Therefore, compare request types that are as similar as possible and pay attention not only to the hit rate but also to their response times and the database load. A high Redis hit rate alone does not indicate whether the shopping cart is displayed quickly and with correct content.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">In contrast, for a predominantly static website, a large portion of page views may already come from the page cache. A persistent object cache primarily affects the requests that WordPress actually processes. Therefore, assess separately whether these remaining requests benefit from the cache and whether the effect impacts the entire website.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If you use Redis in conjunction with other websites or applications, their accesses are also included in the instance counts. Without appropriate, separate telemetry, the global quota cannot be reliably attributed to any single website. Also document which nodes are being tracked: Otherwise, a change in the quota could just as easily be due to different usage patterns or a change in the measurement scope. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"fehlersuche-betrieb\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"fehlersuche-betrieb\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Investigate Unusual Values and Errors<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A low rate is, at first, an observation, not a diagnosis. Possible explanations include a high number of first-time requests, short lifetimes, or a request distribution with keys that are rarely reused. Check whether the request mix or the measurement window has changed before adjusting memory or cache settings. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The Counters <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">expired_keys<\/code> and <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">evicted_keys<\/code> provide additional information: The first counts expired keys, while the second counts keys that have been evicted due to memory limitations. Their differences are specific to the Redis instance and must align with its configuration and usage. A large number of expired keys does not necessarily indicate an incorrectly chosen TTL, nor does it prove that a longer lifespan is advisable; in fact, it can compromise the timeliness of stored data.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For custom extensions, use <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">wp_cache_get<\/code> the parameter <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">$found<\/code> Important: It distinguishes between a value that has been found and one that has been saved <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">false<\/code> from an entry that was not found. Before performing group-related actions, you should use <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">wp_cache_supports<\/code> Check whether the specific backend supports the desired feature. A replacement drop-in may differ from the core implementation.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">Warning:<\/strong> A careless cache flush can affect more entries or applications than intended and skew the next measurement due to a cold start. Determine the scope of impact and obtain approval before performing any deletion actions. Additional considerations regarding the <a href=\"https:\/\/webhosting.de\/en\/object-cache-wordpress-slows-down-serverboost\/\">Troubleshooting a Slow WordPress Object Cache<\/a> help to include any potential cache overhead in the analysis.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"zielwerte-entscheidung\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"zielwerte-entscheidung\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Set Your Own Meaningful Target Values<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A universal minimum quota of 90 percent is not a sound technical requirement. It makes more sense to have a <strong style=\"font-weight:700;color:inherit\">site-specific target range<\/strong>, which aligns with the expected access distribution and the application's needs. Redis recommends evaluating the observed rate in the context of the specific access pattern; a percentage alone does not explain WordPress performance. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">First, record a representative baseline measurement that includes the time period, measurement range, number of requests, and rate. To do this, record response times for important request types, database load, and error rates. Identify cold starts separately and take into account typical differences between periods of low and high traffic, rather than treating a randomly favorable window as the normal state.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Next, plan a specific change and, once it has been approved, test it in a suitable test environment first, if possible. Next, compare similar time periods and request mixes: Do the quota and number of lookups change, as well as latency or database load? This makes it easier to distinguish the effect from a mere shift in access patterns.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Even a high hit rate can mask a few particularly costly misses. Conversely, a moderate hit rate doesn't have to be a problem if relevant queries are answered quickly and accurately. The additional operational overhead for Redis or another persistent backend isn\u2019t automatically justified by a better quota alone; take into account hosting support, costs, and potential failure scenarios.  <\/p>\n<\/section><section class=\"wh-sources\" style=\"margin:40px 0 0;padding:24px 0 0;border-top:1px solid #dce5e9;color:#596b7b;font-size:14px;line-height:1.65\"><h2 style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Sources and Current State of Knowledge<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Status of the research: <time datetime=\"2026-11-04\">2026-11-04<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The research provided is based on sources as of November 4, 2026; check the plugin counting method and Redis configuration for the version being used.<\/p><div class=\"wh-source-urls\"><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/reference\/eviction\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/developer.wordpress.org\/reference\/classes\/wp_object_cache\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/developer.wordpress.org\/news\/2024\/06\/an-introduction-to-the-transients-api\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/developer.wordpress.org\/apis\/transients\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/developer.wordpress.org\/advanced-administration\/wordpress\/wp-config\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/developer.wordpress.org\/reference\/classes\/WP_Object_Cache\/get\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/developer.wordpress.org\/cli\/commands\/cache\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/commands\/info\/<\/span><\/p><\/div><\/section><\/div>","protected":false},"excerpt":{"rendered":"<p>A high object cache hit rate does not guarantee a fast WordPress website. The key factors are the scope of measurement, the time period, and the number of requests, as well as the impact on response time and database load.<\/p>","protected":false},"author":1,"featured_media":22172,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[733],"tags":[],"class_list":["post-22170","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"surfer_file_name":null,"surfer_file_original_url":null,"_wp_attachment_image_alt":null,"litespeed-optimize-set":null,"litespeed-optimize-size":null,"_oembed_b5e1eb923ad3b086e579b1befcd4075c":null,"_elementor_source_image_hash":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"_source_url":null,"_elementor_migrations_state_8b2d":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"_wh_make_key":"wh_b3a40a501080a85b1324ce10a6ac7e87","rank_math_internal_links_processed":"1","_wh_make_topic":"WordPress Object Cache Hit Rate \u2013 Aussagekraft und sinnvolle Zielwerte","_wh_make_input_keywords":["wordpress object cache","redis hit rate","wordpress performance"],"_wh_make_config":{"research_model":"gpt-6.1-terra","writer_model":"gpt-6.1-terra","review_model":"gpt-6.1-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"_wh_make_links":{"I1":{"id":"I1","post_id":21411,"url":"https:\/\/webhosting.de\/cloudlinux-acceleratewp-cache-engine-wordpress-performance-boost\/","title":"CloudLinux AccelerateWP Cache Engine: A Turbo Boost for Your WordPress Cache","excerpt":"AccelerateWP Cache speeds up WordPress on shared hosting servers by combining full-page, browser, server, and object caching with intelligent asset optimization. I\u2019ll show you how the CloudLinux AccelerateWP Cache Engine makes your pages noticeably faster while reducing administrative overhead. Key Points: Full-page and browser caching deliver content instantly. Server caching and preloading reduce TTFB and server load. Redis object caching speeds up dynamic online stores and portals. MAx Cache serves pages directly via Apache\/Nginx. Asset optimization with Critical CSS, WebP\/AVIF, and prefetching. What Makes the AccelerateWP Cache Engine Unique I use the CloudLinux Suite because it bundles caching, asset optimization, and control into a single solution that can be enabled at the server level. The engine provides a full-page cache for complete HTML output, supplemented by a browser cache for returning visitors and a server cache that reduces the load on PHP and the database. It also includes automation for CSS\/JS minification, image conversion to WebP\/AVIF, and Critical CSS for content that appears quickly. Cache preloading stores pages in the cache in advance so that first-time visitors immediately experience faster loading times and there is no wait time. For me, what matters is the holistic approach: a central hub that significantly speeds up WordPress on shared hosting without any manual effort, while also allowing for fine-tuning per site. Multi-layered cache: Full-page, browser, and server With the full-page cache, I store the rendered HTML page as a static file so that WordPress and PHP don\u2019t have to process it with every request. The browser cache stores images, CSS, and JS on the visitor\u2019s device, making subsequent visits load noticeably faster and benefiting mobile users. On the server side, a hot cache handles repeated requests without costly database queries, improving response time and scalability. I also enable preloading so that the cache is pre-filled and cold starts are eliminated. If you\u2019d like to dive deeper, you\u2019ll find a handy step-by-step guide in the post \u201cWordPress Server Boost,\u201d which I like to use as a starting point. Object Cache"},"I2":{"id":"I2","post_id":19673,"url":"https:\/\/webhosting.de\/database-buffer-cache-hit-rate-optimierung-leitfaden-datenstrom\/","title":"Understanding and optimizing database buffer cache hit rates","excerpt":"I\u2019ll explain how to correctly calculate, interpret, and strategically improve the buffer cache hit rate so that queries respond faster with less physical I\/O. I\u2019ll outline specific steps to measurably improve perceived performance\u2014including metrics such as ESTD_PCT_OF_DB_TIME_FOR_READS and practical thresholds. Key Points: Contextualization Instead of Fixating on 99%: Always link the hit rate to the proportion of read time. Use memory as a lever: Gradually increase the cache size; avoid swapping. Workload perspective: Evaluate OLTP differently than DWH\/reporting. Structure monitoring: Keep an eye on queries, I\/O latencies, and DB time. MySQL and Oracle: Plan the buffer pool\/cache strategically. What does the buffer cache hit rate really mean? The buffer cache holds frequently used data blocks in RAM, allowing queries to read from cache without slow disk access when a hit occurs. Every query first checks the cache; only a miss forces physical I\/O. The hit rate is calculated as (logical reads \u2013 physical reads) \/ logical reads and describes the distribution between memory and disk accesses. Experience shows that a high value reduces the number of I\/Os, but it does not automatically explain short response times. I therefore always evaluate this metric in the context of other metrics to ensure that decisions are well-founded. I specify the calculation on a platform-by-platform basis: In Oracle, the standard formula is 1 \u2013 physical reads \/ (consistent gets + db block gets). This way, I include both consistent reads (MVCC) and current block accesses. In MySQL with InnoDB, I use 1 \u2013 innodb_buffer_pool_reads \/ innodb_buffer_pool_read_requests. I always make sure to understand differences in counters and caching strategies before comparing systems\u2014otherwise, I can easily draw the wrong conclusions. The Limitations of the Metrics and What Really Matters A very high hit rate cannot compensate for slow queries if indexes are missing, joins are inefficient, or locks are causing bottlenecks. Conversely, a moderate hit rate is sufficient if memory and I\/O subsystems operate faster or if the workload relies heavily on sequential scans. I therefore correlate the hit rate with the proportion of total DB time spent on physical"},"I3":{"id":"I3","post_id":16774,"url":"https:\/\/webhosting.de\/object-cache-wordpress-langsamer-macht-serverboost\/","title":"Why Object Cache sometimes slows down WordPress","excerpt":"Many admins enable the object cache and then wonder why pages respond more slowly, queries get stuck, or 502 errors occur. I\u2019ll explain the technical reasons behind this, when caching breaks down, and how to configure the cache so that it actually speeds things up instead of slowing them down. Key Points: Overflow caused by autoloaded options and transients leads to rejections and timeouts. Conflicts between Redis, Memcached, and plugins slow down features. Misinterpreting Site Health leads to unnecessary installations. Invalidation and fragmentation keep outdated data in RAM for too long. The role of the page cache: The object cache does not replace it. What sometimes makes the object cache slower? An object cache stores database results in RAM, but it only speeds things up if the hit rate remains high and memory is managed efficiently. If autoloaded options and transients fill the cache to its limit, the engine rejects new entries and WordPress falls back to the database. This increases latency because the server first queries the cache, then fails, then re-executes the query, and finally may attempt to save it again\u2014to no avail. On platforms with strict limits\u2014such as 1 MB per object or buffers around 800 KB\u2014performance drops abruptly. That\u2019s why I first check the size and number of entries before tweaking PHP or the database. The overhead of each cache query also plays a role, even if the entry is missing, which can increase response times for many small, one-time queries. On sites with few repeated database queries, caching offers little benefit because managing the keys costs more than it saves. The more dynamic pages and user-specific elements are involved, the more carefully I configure the cache. Without clear invalidation rules, outdated values remain and cause confusion in the backend and on the live site. A clean workflow of writing, letting it expire, and clearing the cache keeps things running fast. Typical misconfigurations and conflicts Conflicts often arise when multiple plugins provide an `object-cache.php` file and overwrite each other. Since"}},"_wh_make_stage":"entwurf","_wh_make_research_date":"2026-11-04","_wh_make_sitemap_info":{"index":"https:\/\/webhosting.de\/sitemap_index.xml?wh_make=1","sitemaps":["https:\/\/webhosting.de\/post-sitemap1.xml","https:\/\/webhosting.de\/post-sitemap2.xml","https:\/\/webhosting.de\/post-sitemap3.xml","https:\/\/webhosting.de\/post-sitemap4.xml"],"url_count":3138,"fetched_at":"2026-11-04T08:42:44+00:00","selected_ids":[21411,19673,16774]},"_wh_make_draft_hash":"ee4a3c84a08ef1850db5533564dcae70a0e812a4abf38a3876b9652a4a921567","_wh_make_work":{"version":"2.1","identity":{"sheet_ref":"1VMjxV8Q73i0Q1HO6s-u4jNHVRF0snliGCeg97intLPs","sheet_name":"Tabellenblatt1","external_id":"1443","topic":"WordPress Object Cache Hit Rate \u2013 Aussagekraft und sinnvolle Zielwerte","keywords":["wordpress object cache","redis hit rate","wordpress performance"],"category_input":"733"},"config":{"research_model":"gpt-6.1-terra","writer_model":"gpt-6.1-terra","review_model":"gpt-6.1-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"phase":"done","pending":null,"receipts":{"2a5f5b36e87fff96f016092aedd8d1bc":"f53b27e40a142ef2db994e3f95df7577a8a31ecf336f4f9cddea2410eeab829e","c0d0cebf6eba5845f08d9651a292169c":"75ecd9454ed4b02ef1a792506732a52024532e2e4904dc5c83bb755340c977ca","5f7d78d2b3d12019dfeb20b2e03d4d19":"cdcb196d846e66aafb72dcf12efe849ebf8e4289854f6937bc864af869c4cd6c","55f0a5046ca2fb35eaf7b332efa7f6e5":"0ce9dd961f45f4e38a7b73634690c29307b40b11de9a3a4a5b0673c30de2ce17","c77b98b0daafa2dca87a757b4518feae":"ed52c1790edf4987aee814d81610a6df0a7d013081a01b8826600262096a3b9b","11a4e9c894c8e5e63c8748041adb1d2e":"f332742cab4c067316c8377b108b26f5949f642962f84a15fe3a445de738fc2c","069e443c8af021aba56b45c97be196a1":"641a49cd5207297f34eae5fc1098a659806f248ab56ece4a1a5bdff4153e3acd","0a622f8ea13faa74c5b2616fb603fa09":"e2c754eddc83d454d085dfe1bbffc00306976afb774f194aaf9a036424c3b9c0","90342e627b1342f0d1c23795bffb0360":"5eb0a06d11c835aac38945154d540fa44616a748dd4f1071903baaf12b019618","1716f227600d2828b96b3e14d37c6a5e":"781bbf4632087ec25df716c10ce53a21e294455dc229a478c92ca3c911bf0278","4751f66871a65573c812d4e4319af29f":"962fc6c94d26154b720463799cafdef757cd86621ff8609a0ae1721cb095b81e"},"parts":{"1":[{"id":"object-cache-grundlagen","heading":"Was der WordPress Object Cache speichert","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der WordPress Object Cache h\u00e4lt Daten unter einem Schl\u00fcssel und innerhalb einer Gruppe bereit. Fragt WordPress denselben Wert erneut ab, kann es ihn aus dem Cache beziehen, statt die zugrunde liegende Arbeit erneut auszuf\u00fchren. Dazu geh\u00f6ren beispielsweise Daten, die sonst aus der Datenbank gelesen oder erneut berechnet werden m\u00fcssten.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die eingebaute Core-Implementierung ist standardm\u00e4\u00dfig ","ref":""},{"kind":"strong","text":"requestgebunden","ref":""},{"kind":"text","text":": Sie h\u00e4lt ihre Eintr\u00e4ge w\u00e4hrend eines einzelnen Requests vor. Ein sp\u00e4terer Seitenaufruf erh\u00e4lt dadurch nicht automatisch Zugriff auf die zuvor gespeicherten Werte. Trotzdem kann der Cache schon innerhalb eines Requests wiederholte Zugriffe vermeiden.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Drop-in kann die Core-Implementierung durch einen ","ref":""},{"kind":"strong","text":"persistenten Object Cache","ref":""},{"kind":"text","text":" ersetzen. Dann k\u00f6nnen geeignete Eintr\u00e4ge \u00fcber einzelne Requests hinaus erhalten bleiben. Redis ist eine m\u00f6gliche Backend-Option, aber keine Voraussetzung f\u00fcr WordPress; auch andere Backend-Ans\u00e4tze sind m\u00f6glich. Selbst mit einem persistenten Drop-in k\u00f6nnen bestimmte Gruppen weiterhin nur f\u00fcr den aktuellen Request gelten.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Transients sind eine weitere M\u00f6glichkeit, zeitlich begrenzt ben\u00f6tigte Daten abzulegen. Mit einem persistenten Object Cache k\u00f6nnen sie dort gespeichert werden, ohne ihn normalerweise in der Datenbank. Ihre Ablaufzeit bezeichnet keine garantierte Mindestverf\u00fcgbarkeit: Ein Wert kann fr\u00fcher verschwinden. Anwendungscode muss deshalb mit einem fehlenden Transient rechnen und den Wert bei Bedarf regenerieren k\u00f6nnen.","ref":""},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S8"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die sp\u00e4tere Bewertung einer Trefferquote ist diese Unterscheidung entscheidend: Ein Zugriff auf den lokalen Cache w\u00e4hrend eines Requests und ein Zugriff auf ein externes Backend sind nicht zwangsl\u00e4ufig dieselbe Messgr\u00f6\u00dfe. Pr\u00fcfe daher zun\u00e4chst, welche Implementierung tats\u00e4chlich verwendet wird und welche Daten sie persistent behandelt.","ref":""}]}]},{"id":"cache-ebenen","heading":"Object Cache und Page Cache unterscheiden","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem Seitenaufruf kann ein ","ref":""},{"kind":"strong","text":"Page Cache","ref":""},{"kind":"text","text":" eine bereits erzeugte Seitenantwort ausliefern. Wird die Anfrage dort beantwortet, muss sie nicht denselben WordPress-Anwendungspfad durchlaufen wie eine ungecachte Anfrage. Der Object Cache arbeitet dagegen innerhalb der Anwendung mit einzelnen zwischengespeicherten Daten, nicht mit der vollst\u00e4ndigen Seitenantwort.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Stell dir eine \u00f6ffentlich erreichbare Artikelseite vor: Liegt ihre Antwort im Page Cache, kann sie direkt ausgeliefert werden. Muss WordPress die Seite dagegen erzeugen, kann der Object Cache bei wiederholten Datenzugriffen helfen. Welche Arbeit dadurch tats\u00e4chlich entf\u00e4llt, h\u00e4ngt von der Anfrage, den gespeicherten Eintr\u00e4gen und der jeweiligen Implementierung ab.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das hat Folgen f\u00fcr die Interpretation: Eine gute Object-Cache-Quote beschreibt nur die erfassten Cache-Zugriffe. Sie sagt nicht unmittelbar, wie viele Besucher bereits eine fertige Antwort aus dem Page Cache erhalten oder wie schnell die gesamte Website reagiert. Bei starkem Page Caching kann der Nutzen des Object Cache vor allem bei den verbleibenden WordPress-Requests sichtbar werden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch Browser- und Opcode-Cache erf\u00fcllen andere Aufgaben. Der Browser-Cache h\u00e4lt Ressourcen beim Besucher vor; ein PHP-Opcode-Cache speichert kompilierten PHP-Code. Beide ersetzen weder die Speicherung einzelner Anwendungsdaten im Object Cache noch die Auslieferung einer vollst\u00e4ndigen Antwort aus einem Page Cache.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Konstante ","ref":""},{"kind":"code","text":"WP_CACHE","ref":""},{"kind":"text","text":" allein aktiviert keinen Redis Object Cache. F\u00fcr einen persistenten Object Cache brauchst du eine passende Implementierung und deren unterst\u00fctzte Konfiguration. Ein erg\u00e4nzendes Beispiel f\u00fcr das Zusammenspiel mehrerer Ebenen findest du im Beitrag zur ","ref":""},{"kind":"internal_link","text":"AccelerateWP Cache Engine","ref":"I1"},{"kind":"text","text":".","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S2"}]}]},{"id":"hit-rate-grundlagen","heading":"Was Hits und Misses aussagen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein ","ref":""},{"kind":"strong","text":"Hit","ref":""},{"kind":"text","text":" liegt vor, wenn ein gesuchter Eintrag auf der betrachteten Cache-Ebene gefunden wird. Ein ","ref":""},{"kind":"strong","text":"Miss","ref":""},{"kind":"text","text":" bedeutet, dass er dort nicht gefunden wird. Die Hit Rate setzt die Treffer ins Verh\u00e4ltnis zu allen gez\u00e4hlten Treffern und Fehlversuchen: Hits \/ (Hits + Misses) \u00d7 100. Gibt es weder Hits noch Misses, ist die Quote f\u00fcr diesen Zeitraum nicht definiert.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Miss ist nicht automatisch ein technischer Fehler. Beim ersten Zugriff kann ein Eintrag noch fehlen; auch nach seinem Ablauf muss er gegebenenfalls neu beschafft oder erzeugt werden. Entscheidend ist, welche Folgen solche Fehlversuche im konkreten Ablauf haben und ob sich Zugriffe \u00fcberhaupt sinnvoll wiederholen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Core-Methode von WordPress z\u00e4hlt in ihrer eigenen Implementierung Cache-Treffer und Fehlversuche. Ein Drop-in kann diese Implementierung jedoch ersetzen. Deshalb l\u00e4sst sich aus der Core-Z\u00e4hlweise nicht sicher ableiten, was eine Plugin-Anzeige erfasst: Pr\u00fcfe f\u00fcr die eingesetzte Version, welche Zugriffe und welchen Zeitraum ihre Kennzahl umfasst.","ref":""},{"kind":"citation","text":"","ref":"S5"},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Redis meldet mit ","ref":""},{"kind":"code","text":"keyspace_hits","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"keyspace_misses","ref":""},{"kind":"text","text":" erfolgreiche beziehungsweise erfolglose Key-Lookups im Redis-Keyspace. Auch ein fehlgeschlagener ","ref":""},{"kind":"code","text":"EXISTS","ref":""},{"kind":"text","text":"-Aufruf kann als Miss z\u00e4hlen. Diese Redis Hit Rate ist daher nicht automatisch mit einer WordPress- oder Plugin-Quote gleichzusetzen.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Kommt eine Redis-Instanz mehreren Websites oder Anwendungen zugute, k\u00f6nnen ihre Z\u00e4hler deren Zugriffe gemeinsam abbilden. Eine globale Quote l\u00e4sst sich dann ohne geeignete getrennte Telemetrie nicht belastbar einer einzelnen WordPress-Website zuordnen. F\u00fcr jeden Vergleich solltest du deshalb festhalten, welche Ebene und welche Instanz die Zahlen \u00fcberhaupt beschreiben.","ref":""}]}]}],"2":[{"id":"messung-vorbereiten","heading":"Messbereich und Zugriff sicher pr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Kl\u00e4re vor der Messung, welche Object-Cache-Implementierung WordPress verwendet. Wenn WP-CLI verf\u00fcgbar ist und du Zugriff auf das WordPress-Verzeichnis hast, kannst du dort eine lesende Bestandsaufnahme mit folgendem Befehl beginnen:","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"code","language":"bash","code":"wp cache type","source_ids":["S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Das Ergebnis hilft bei der Einordnung der Implementierung, beweist aber nicht, dass jeder relevante Zugriff persistent gespeichert wird. WordPress erlaubt einem Drop-in, den Core-Cache zu ersetzen; zugleich k\u00f6nnen einzelne Gruppen nicht persistent sein. Halte deshalb auch das eingesetzte Drop-in beziehungsweise Plugin und seine Version fest. ","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Pr\u00fcfe in der Dokumentation der konkreten Version, welche Zugriffe ihre angezeigten Hits und Misses umfassen und \u00fcber welchen Zeitraum sie gez\u00e4hlt werden. Eine Plugin-Quote l\u00e4sst sich nur dann sinnvoll mit einer anderen Kennzahl vergleichen, wenn Messbereich und Z\u00e4hlweise bekannt sind. Besonders wichtig ist, ob die Anzeige nur einen Request oder ein l\u00e4ngeres Fenster beschreibt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr Redis kannst du, sofern Verbindung und Berechtigungen vorhanden sind, in einer Redis-CLI-Sitzung die Statistik- und Speicherinformationen lesend abfragen. Die folgenden Befehle enthalten bewusst keine Zugangsdaten:","ref":""},{"kind":"citation","text":"","ref":"S7"}]},{"type":"code","language":"redis","code":"INFO stats\nINFO memory","source_ids":["S7"]},{"type":"paragraph","runs":[{"kind":"text","text":"Dokumentiere den ","ref":""},{"kind":"strong","text":"Messbereich","ref":""},{"kind":"text","text":": Welche Instanz oder Knoten wurden abgefragt, und welche anderen Websites oder Anwendungen nutzen sie? Globale Redis-Z\u00e4hler lassen sich bei gemeinsamer Nutzung nicht ohne Weiteres einer einzelnen Website zuordnen. Pr\u00fcfe Ausgaben vor der Weitergabe auf sensible Betriebsinformationen; weder ein Flush noch ein Lasttest ist f\u00fcr diese Bestandsaufnahme erforderlich.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Fehlt dir der Zugriff auf die Redis-CLI, frage deinen Hosting-Anbieter nach den verf\u00fcgbaren Metriken und ihrem Geltungsbereich. Auch ein Dashboard ist nur dann eine brauchbare Grundlage, wenn klar ist, ob es dieselbe Instanz, einzelne Knoten oder bereits aggregierte Werte zeigt.","ref":""}]}]},{"id":"intervall-berechnen","heading":"Redis Hit Rate im Intervall berechnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Redis-Statistiken sind Z\u00e4hlerst\u00e4nde, keine fertige Aussage \u00fcber einen bestimmten Messzeitraum. Lies f\u00fcr eine Intervallauswertung die Werte f\u00fcr ","ref":""},{"kind":"code","text":"keyspace_hits","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"keyspace_misses","ref":""},{"kind":"text","text":" zu Beginn und am Ende desselben festgelegten Zeitfensters von derselben Instanz ab. Notiere beide Zeitpunkte und die zugeh\u00f6rige Instanz, damit die Ablesungen zusammenpassen. ","ref":""},{"kind":"citation","text":"","ref":"S7"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ziehe anschlie\u00dfend f\u00fcr jeden Z\u00e4hler den Anfangswert vom Endwert ab. Die ","ref":""},{"kind":"strong","text":"Intervall-Hit-Rate","ref":""},{"kind":"text","text":" lautet: \u0394Hits \/ (\u0394Hits + \u0394Misses) \u00d7 100. Das Zeichen \u0394 steht f\u00fcr die jeweilige Differenz. Sind beide Differenzen null, gab es in diesem Fenster keine gez\u00e4hlten Lookups; die Quote ist dann nicht definiert, statt null Prozent zu betragen. ","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein illustratives Rechenbeispiel, keine Messung: Steigen die Hits um 900 und die Misses um 100, ergeben sich 90 Prozent bei insgesamt 1.000 gez\u00e4hlten Lookups. Das hei\u00dft weder, dass Seiten um 90 Prozent schneller sind, noch dass genau 900 Datenbankabfragen eingespart wurden. Redis z\u00e4hlt Key-Lookups; deren Bedeutung f\u00fcr die Anwendung h\u00e4ngt vom jeweiligen Zugriff ab. ","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Geht einer der Z\u00e4hler zwischen den Ablesungen zur\u00fcck, ist die einfache Differenz \u00fcber diesen Bruch nicht g\u00fcltig. Ein Neustart oder das Zur\u00fccksetzen von Statistiken kann dazu f\u00fchren. Beginne das Messfenster neu oder teile es anhand verl\u00e4sslicher Betriebsdaten am Bruch auf, statt einen negativen Wert in die Formel einzusetzen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei mehreren Knoten berechnest du zun\u00e4chst f\u00fcr jeden passenden Knoten die Differenzen \u00fcber denselben Zeitraum. Addiere dann die Hits und Misses getrennt und bilde daraus die Gesamtquote. Ein ungewichteter Mittelwert der einzelnen Prozentwerte behandelt einen Knoten mit wenigen Lookups sonst genauso wie einen mit vielen; das kann das Gesamtbild erheblich verzerren.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Halte dabei fest, welche Knoten tats\u00e4chlich einbezogen sind und welche Rolle sie in der Umgebung haben. Eine so berechnete Gesamtrate beschreibt nur die ausgew\u00e4hlten Z\u00e4hler und deren Nutzer; sie wird nicht allein durch die Aggregation zu einer spezifischen WordPress-Object-Cache-Quote.","ref":""}]}]},{"id":"messprotokoll-kennzahlen","heading":"Messprotokoll und Redis-Kennzahlen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Neben Hits und Misses helfen weitere Redis-Z\u00e4hler bei der Einordnung. Auch hier sind Differenzen im gew\u00e4hlten Zeitraum aussagekr\u00e4ftiger als isolierte Gesamtst\u00e4nde. Die folgende Tabelle trennt die Bedeutung der Werte von Schlussfolgerungen, die sie allein nicht tragen. ","ref":""},{"kind":"citation","text":"","ref":"S4"},{"kind":"citation","text":"","ref":"S7"}]},{"type":"table","caption":"Redis-Kennzahlen und Grenzen ihrer Interpretation","headers":["Kennzahl","Bedeutung","Interpretationsgrenze"],"rows":[["keyspace_hits","Erfolgreiche Key-Lookups","Kein direkter Nachweis gesparter Datenbankabfragen oder schnellerer Seiten."],["keyspace_misses","Erfolglose Key-Lookups","Auch ein fehlgeschlagenes EXISTS kann z\u00e4hlen; ein Miss ist nicht automatisch ein Fehler."],["expired_keys","Abgelaufene Schl\u00fcssel","Ein Anstieg allein beweist keine falsch gew\u00e4hlte Lebensdauer."],["evicted_keys","Aufgrund der Speichergrenze verdr\u00e4ngte Schl\u00fcssel","Im Zusammenhang mit Speichergrenze und Eviction-Konfiguration pr\u00fcfen; daraus folgt nicht automatisch eine konkrete Ursache f\u00fcr langsame Requests."]],"source_ids":["S4","S7"]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Anstieg von ","ref":""},{"kind":"code","text":"expired_keys","ref":""},{"kind":"text","text":" kann Anlass sein, Lebensdauern und Zugriffsmuster n\u00e4her anzusehen. Er zeigt aber nicht, ob ein Eintrag kurz nach seinem Ablauf erneut ben\u00f6tigt wurde. Ebenso ist ","ref":""},{"kind":"code","text":"evicted_keys","ref":""},{"kind":"text","text":" im Kontext der konfigurierten Speichergrenze und Verdr\u00e4ngungsstrategie zu betrachten, statt daraus sofort eine Speichererh\u00f6hung abzuleiten. ","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein brauchbares ","ref":""},{"kind":"strong","text":"Messprotokoll","ref":""},{"kind":"text","text":" nennt Anfang und Ende des Zeitfensters, Instanz beziehungsweise Knoten, die beiden Z\u00e4hlerdifferenzen, ihre Summe und die berechnete Quote. Erg\u00e4nze, ob die Instanz gemeinsam genutzt wird und ob w\u00e4hrend des Fensters ein Neustart oder eine R\u00fccksetzung bekannt ist. So bleiben Messungen sp\u00e4ter nachvollziehbar.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Erfasse parallel den betrachteten Request-Typ und eine daf\u00fcr geeignete Latenzkennzahl sowie Datenbanklast und Fehlerrate. Trenne beispielsweise \u00f6ffentliche Seitenaufrufe von eingeloggten Anfragen, wenn daf\u00fcr passende Daten vorliegen. Die Redis-Quote allein verr\u00e4t nicht, welcher dieser Request-Typen von einem Treffer profitiert hat.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr einen sp\u00e4teren Vergleich sollten Zeitraum, Knoten und Request-Mischung m\u00f6glichst \u00e4hnlich sein. Notiere au\u00dferdem relevante \u00c4nderungen und erkennbare Warm-up-Phasen. Wo Daten fehlen oder eine gemeinsame Instanz keine Zuordnung erlaubt, geh\u00f6rt diese Einschr\u00e4nkung ins Protokoll statt in eine scheinbar pr\u00e4zise Schlussfolgerung.","ref":""}]}]}],"3":[{"id":"szenarien-einordnen","heading":"Kaltstart, Shop und statische Website","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Nach einem Neustart oder Deployment k\u00f6nnen ben\u00f6tigte Eintr\u00e4ge zun\u00e4chst fehlen. Solche Misses sind beim Bef\u00fcllen des Cache zu erwarten; bei wiederkehrenden Zugriffen kann die Trefferquote anschlie\u00dfend steigen. Werte aus der ","ref":""},{"kind":"strong","text":"Kalt- und Warmphase","ref":""},{"kind":"text","text":" solltest du getrennt betrachten, damit ein langer Durchschnitt weder die Anlaufkosten noch das sp\u00e4tere Verhalten verdeckt.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem Shop oder einem eingeloggten Bereich sind dynamische Anfragen besonders interessant: Ein Page Cache beantwortet nicht unbedingt jeden Warenkorb- oder Kontoaufruf. Vergleiche deshalb m\u00f6glichst \u00e4hnliche Request-Typen und achte neben der Quote auf ihre Antwortzeiten und die Datenbanklast. Eine hohe Redis Hit Rate zeigt f\u00fcr sich genommen nicht, ob der Warenkorb schnell und inhaltlich korrekt angezeigt wird.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einer \u00fcberwiegend statischen Website kann dagegen ein gro\u00dfer Teil der Seitenaufrufe bereits aus dem Page Cache kommen. Ein persistenter Object Cache wirkt dort vor allem auf die Anfragen, die WordPress tats\u00e4chlich verarbeitet. Beurteile deshalb getrennt, ob diese verbleibenden Anfragen profitieren und ob sich der Effekt auf die gesamte Website auswirkt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Nutzt du Redis gemeinsam mit anderen Websites oder Anwendungen, umfassen die Instanzz\u00e4hler deren Zugriffe ebenfalls. Ohne geeignete getrennte Telemetrie l\u00e4sst sich die globale Quote keiner einzelnen Website zuverl\u00e4ssig zuordnen. Dokumentiere auch, welche Knoten erfasst sind: Eine Ver\u00e4nderung der Quote kann sonst ebenso an einer anderen Nutzung oder an einem ver\u00e4nderten Messbereich liegen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]},{"id":"fehlersuche-betrieb","heading":"Auff\u00e4llige Werte und Fehler untersuchen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine niedrige Quote ist zun\u00e4chst eine Beobachtung, keine Diagnose. Viele Erstzugriffe, kurze Lebensdauern oder eine Zugriffsverteilung mit selten wiederverwendeten Schl\u00fcsseln kommen als Erkl\u00e4rungen infrage. Pr\u00fcfe, ob sich die Request-Mischung oder das Messfenster ver\u00e4ndert hat, bevor du Speicher oder Cache-Einstellungen anpasst.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Z\u00e4hler ","ref":""},{"kind":"code","text":"expired_keys","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"evicted_keys","ref":""},{"kind":"text","text":" liefern weitere Hinweise: Der erste z\u00e4hlt abgelaufene Schl\u00fcssel, der zweite aufgrund der Speicherbegrenzung verdr\u00e4ngte Schl\u00fcssel. Ihre Differenzen geh\u00f6ren zur Redis-Instanz und m\u00fcssen zur Konfiguration und Nutzung passen. Viele abgelaufene Schl\u00fcssel beweisen weder eine falsch gew\u00e4hlte TTL noch, dass eine l\u00e4ngere Lebensdauer sinnvoll ist; sie kann die Aktualit\u00e4t gespeicherter Daten verschlechtern.","ref":""},{"kind":"citation","text":"","ref":"S4"},{"kind":"citation","text":"","ref":"S7"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr eigene Erweiterungen ist bei ","ref":""},{"kind":"code","text":"wp_cache_get","ref":""},{"kind":"text","text":" der Parameter ","ref":""},{"kind":"code","text":"$found","ref":""},{"kind":"text","text":" wichtig: Er unterscheidet einen gefundenen, gespeicherten Wert ","ref":""},{"kind":"code","text":"false","ref":""},{"kind":"text","text":" von einem nicht gefundenen Eintrag. Vor gruppenbezogenen Aktionen solltest du mit ","ref":""},{"kind":"code","text":"wp_cache_supports","ref":""},{"kind":"text","text":" pr\u00fcfen, ob das konkrete Backend die gew\u00fcnschte Funktion unterst\u00fctzt. Ein ersetzendes Drop-in kann sich von der Core-Implementierung unterscheiden.","ref":""},{"kind":"citation","text":"","ref":"S5"},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"strong","text":"Warnung:","ref":""},{"kind":"text","text":" Ein unbedachter Cache-Flush kann mehr Eintr\u00e4ge oder Anwendungen betreffen als beabsichtigt und die n\u00e4chste Messung durch einen Kaltstart verzerren. Kl\u00e4re den Wirkungsbereich und eine Freigabe, bevor du l\u00f6schende Aktionen ausf\u00fchrst. Erg\u00e4nzende Ansatzpunkte zur ","ref":""},{"kind":"internal_link","text":"Fehlersuche bei einem langsamen WordPress Object Cache","ref":"I3"},{"kind":"text","text":" helfen, auch m\u00f6glichen Cache-Overhead in die Untersuchung einzubeziehen.","ref":""}]}]},{"id":"zielwerte-entscheidung","heading":"Sinnvolle Zielwerte selbst bestimmen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine universelle Mindestquote von 90 Prozent ist keine belastbare technische Anforderung. Sinnvoller ist ein ","ref":""},{"kind":"strong","text":"standortspezifischer Zielbereich","ref":""},{"kind":"text","text":", der zur erwarteten Zugriffsverteilung und zum Nutzen f\u00fcr die Anwendung passt. Redis empfiehlt, die beobachtete Quote im Kontext des jeweiligen Zugriffsmusters zu beurteilen; ein Prozentwert allein erkl\u00e4rt noch keine WordPress Performance.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Erfasse zun\u00e4chst eine repr\u00e4sentative Ausgangsmessung mit Zeitraum, Messbereich, Zugriffszahl und Quote. Halte dazu Antwortzeiten wichtiger Request-Typen, Datenbanklast und Fehlerrate fest. Kennzeichne Kaltstarts gesondert und ber\u00fccksichtige typische Unterschiede zwischen Zeiten mit wenig und viel Betrieb, statt ein zuf\u00e4llig g\u00fcnstiges Fenster als Normalzustand zu behandeln.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Plane anschlie\u00dfend eine konkrete \u00c4nderung und pr\u00fcfe sie nach Freigabe m\u00f6glichst zuerst in einer geeigneten Testumgebung. Stelle danach vergleichbare Zeitr\u00e4ume und Request-Mischungen gegen\u00fcber: \u00c4ndern sich Quote und Anzahl der Lookups, aber auch die Latenz oder die Datenbanklast? So l\u00e4sst sich der Effekt besser von einer blo\u00dfen Verschiebung der Zugriffe unterscheiden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch eine hohe Quote kann wenige, besonders teure Misses verdecken. Umgekehrt muss eine moderate Quote kein Problem sein, wenn relevante Anfragen schnell und korrekt beantwortet werden. Zus\u00e4tzlicher Betriebsaufwand f\u00fcr Redis oder ein anderes persistentes Backend ist durch eine bessere Quote allein nicht automatisch gerechtfertigt; ber\u00fccksichtige Hosting-Unterst\u00fctzung, Kosten und m\u00f6gliche Ausfallszenarien.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S4"}]}]}]},"plan":{"reader_question":"Wie misst und beurteilst du die Hit Rate des WordPress Object Cache oder eines Redis-Backends, und welcher Zielbereich ist f\u00fcr deine Website sinnvoll?","sections":[{"id":"object-cache-grundlagen","heading":"Was der WordPress Object Cache speichert","part":1,"target_words":270,"purpose":"In kurzen Abs\u00e4tzen Schl\u00fcssel und Gruppen sowie den requestgebundenen Core-Cache erkl\u00e4ren. Persistente Drop-ins und weiterhin nicht persistente Gruppen abgrenzen. Transients als regenerierbare Daten behandeln: Ihre Ablaufzeit garantiert keine Mindestverf\u00fcgbarkeit. Redis als m\u00f6gliche Backend-Option, nicht als Voraussetzung darstellen.","source_ids":["S1","S3","S8"],"internal_link_ids":[]},{"id":"cache-ebenen","heading":"Object Cache und Page Cache unterscheiden","part":1,"target_words":270,"purpose":"An einem Seitenaufruf zeigen, wie Page Cache und Object Cache unterschiedliche Arbeit vermeiden; Browser- und Opcode-Cache knapp abgrenzen. Erkl\u00e4ren, dass WP_CACHE allein keinen Redis Object Cache aktiviert und ein Page-Cache-Treffer den WordPress-Anwendungspfad umgehen kann. Den internen Artikel als erg\u00e4nzendes Beispiel f\u00fcr mehrere Cache-Ebenen verlinken, nicht als Prim\u00e4rbeleg.","source_ids":["S1","S2"],"internal_link_ids":["I1"]},{"id":"hit-rate-grundlagen","heading":"Was Hits und Misses aussagen","part":1,"target_words":270,"purpose":"Hit, Miss und die Formel Hits \/ (Hits + Misses) \u00d7 100 erkl\u00e4ren; bei null Zugriffen ist die Quote nicht definiert. Erwartbare Misses beim Erstzugriff oder Ablauf von Fehlern unterscheiden. Anschlie\u00dfend WordPress-Core-Z\u00e4hlung, m\u00f6gliche Drop-in-Z\u00e4hlweisen und globale Redis-Key-Lookups gegen\u00fcberstellen; ein fehlgeschlagenes EXISTS kann bei Redis ebenfalls als Miss z\u00e4hlen.","source_ids":["S1","S4","S5"],"internal_link_ids":[]},{"id":"messung-vorbereiten","heading":"Messbereich und Zugriff sicher pr\u00fcfen","part":2,"target_words":270,"purpose":"Eine lesende Bestandsaufnahme im WordPress-Verzeichnis mit wp cache type und bei Berechtigung mit INFO stats und INFO memory planen. Grenzen der Erkennung, Plugin-Version und Z\u00e4hlweise sowie Instanz, Knoten und weitere Redis-Nutzer dokumentieren. Zugangsdaten nicht in Beispiele aufnehmen und Ausgaben vor Weitergabe pr\u00fcfen; Flush- oder Lasttestbefehle nicht voraussetzen.","source_ids":["S1","S6","S7"],"internal_link_ids":[]},{"id":"intervall-berechnen","heading":"Redis Hit Rate im Intervall berechnen","part":2,"target_words":270,"purpose":"Zwei Ablesungen derselben Instanz und die Berechnung aus Z\u00e4hlerdifferenzen erl\u00e4utern. Das ausdr\u00fccklich illustrative Beispiel mit 900 Hits und 100 Misses ergibt 90 Prozent bei 1.000 Lookups, aber weder 90 Prozent schnellere Seiten noch 900 gesparte Datenbankabfragen. Z\u00e4hlerr\u00fcckg\u00e4nge als Bruch behandeln; bei mehreren Knoten passende Z\u00e4hler addieren statt Prozentwerte ungewichtet zu mitteln.","source_ids":["S4","S7"],"internal_link_ids":[]},{"id":"messprotokoll-kennzahlen","heading":"Messprotokoll und Redis-Kennzahlen","part":2,"target_words":270,"purpose":"Eine informative Tabelle mit keyspace_hits, keyspace_misses, expired_keys und evicted_keys planen: Bedeutung, sichere Interpretation und jeweilige Grenze. Anschlie\u00dfend ein knappes Messprotokoll mit Zeitraum, Instanz oder Knoten, Differenzen, Quote, Request-Typ, Latenz, Datenbanklast und Fehlerrate beschreiben. Keine Zeitreihe oder Messwerte erfinden.","source_ids":["S4","S7"],"internal_link_ids":[]},{"id":"szenarien-einordnen","heading":"Kaltstart, Shop und statische Website","part":3,"target_words":270,"purpose":"Drei kurze Praxisf\u00e4lle gegen\u00fcberstellen: Kalt- und Warmphase getrennt auswerten; bei Shop oder Login vergleichbare dynamische Requests und deren Korrektheit pr\u00fcfen; bei starkem Page Cache Nutzen f\u00fcr verbleibende WordPress-Requests und gesamte Website unterscheiden. Gemeinsame Redis-Instanzen als Zuordnungsgrenze erg\u00e4nzen, ohne aus einer Beobachtung eine sichere Ursache abzuleiten.","source_ids":["S1","S4","S7"],"internal_link_ids":[]},{"id":"fehlersuche-betrieb","heading":"Auff\u00e4llige Werte und Fehler untersuchen","part":3,"target_words":270,"purpose":"M\u00f6gliche Ursachen niedriger Quoten wie Erstzugriffe, kurze Lebensdauer oder Zugriffsverteilung als Hypothesen formulieren. expired_keys und evicted_keys im Konfigurationskontext pr\u00fcfen; l\u00e4ngere TTL kann Aktualit\u00e4t kosten. F\u00fcr Entwickler found bei wp_cache_get und wp_cache_supports vor gruppenbezogenen Aktionen erkl\u00e4ren. Vor unbedachtem Flush und Kaltstartfolgen warnen; den internen Artikel erg\u00e4nzend zur Fehlersuche verlinken.","source_ids":["S1","S4","S5","S7"],"internal_link_ids":["I3"]},{"id":"zielwerte-entscheidung","heading":"Sinnvolle Zielwerte selbst bestimmen","part":3,"target_words":270,"purpose":"Einen Entscheidungsrahmen statt einer universellen 90-Prozent-Schwelle geben: repr\u00e4sentative Ausgangsmessung, Zugriffszahl und relevante Latenz-, Datenbank- und Fehlermetriken erfassen; eine freigegebene \u00c4nderung m\u00f6glichst zuerst in geeigneter Testumgebung pr\u00fcfen und vergleichbare Last gegen\u00fcberstellen. Einordnen, dass hohe Quoten teure Misses verdecken k\u00f6nnen und zus\u00e4tzlicher Betriebsaufwand ohne messbaren Nutzen nicht automatisch gerechtfertigt ist.","source_ids":["S1","S4"],"internal_link_ids":[]}]},"repairs":0,"reviews":1,"issues":[],"guard":{"content_md5":"038d560f6167904965544a3462adf644","title":"WordPress Object Cache Hit Rate: Significance and Meaningful Target Values","slug":"wordpress-object-cache-hit-rate","excerpt":"A high object cache hit rate does not guarantee a fast WordPress website. The key factors are the scope of measurement, the time period, and the number of requests, as well as the impact on response time and database load.","status":"draft","featured_media":22172},"verify":{"content_md5":"038d560f6167904965544a3462adf644","title":"WordPress Object Cache Hit Rate: Significance and Meaningful Target Values","slug":"wordpress-object-cache-hit-rate","excerpt":"A high object cache hit rate does not guarantee a fast WordPress website. The key factors are the scope of measurement, the time period, and the number of requests, as well as the impact on response time and database load.","status":"draft","featured_media":22172},"row_number":1938,"created_at":"2026-11-04T13:47:02+00:00","editorial_policy":{"version":"2.1.6","max_repairs":4,"review_model_from_attempt":2},"updated_at":"2026-11-04T13:51:59+00:00","verified_at":"2026-11-04T13:51:40+00:00"},"_wh_make_research":"# Recherchebriefing: WordPress Object Cache Hit Rate\n\nRechercheangabe: 4. November 2026  \nGeplanter Artikelumfang: 2.400\u20132.700 W\u00f6rter  \nStatus: Briefing, kein fertiger Artikel\n\n## Leserfrage und Kernaussage\n\nWie l\u00e4sst sich die Hit Rate des WordPress Object Cache beziehungsweise eines Redis-Backends richtig messen und beurteilen? Und welcher Zielwert ist f\u00fcr die eigene Website sinnvoll?\n\nDie zentrale Aussage des Artikels sollte lauten: Eine Hit Rate beschreibt Treffer innerhalb einer definierten Messgr\u00f6\u00dfe. Sie ist weder unmittelbar ein Ma\u00df f\u00fcr die gesamte WordPress Performance noch gibt es einen belegten, f\u00fcr alle Websites g\u00fcltigen Prozent-Zielwert. Aussagekr\u00e4ftig wird sie erst zusammen mit Messbereich, Zeitraum, Datenmenge, Lastprofil und Auswirkungen auf Antwortzeiten und Datenbank.\n\nAls redaktionelle Leitlinie empfiehlt sich deshalb ein standortspezifischer Zielbereich: Zun\u00e4chst eine belastbare Ausgangsmessung erfassen, dann eine konkrete Ver\u00e4nderung an einer vergleichbaren Last pr\u00fcfen. Ein hoher Wert allein ist kein Erfolgsnachweis.\n\n## Voraussetzungen und Begriffe\n\nDie Zielgruppe sollte WordPress administrieren und unterscheiden k\u00f6nnen, ob ein persistenter Object Cache aktiv ist. Grundkenntnisse zu Datenbank, Hosting und gegebenenfalls Redis helfen; Root-Zugriff ist zum Verst\u00e4ndnis nicht erforderlich.\n\nDer WordPress Object Cache speichert Daten unter Schl\u00fcsseln und Gruppen, um wiederholte teure Zugriffe oder Berechnungen zu vermeiden. Der Core-Cache ist standardm\u00e4\u00dfig nicht persistent: Seine Inhalte stehen nur w\u00e4hrend des jeweiligen Requests zur Verf\u00fcgung. Ein Drop-in kann ihn durch eine persistente Implementierung ersetzen. Manche Gruppen bleiben trotzdem nur f\u00fcr den aktuellen Request verf\u00fcgbar. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/wp_object_cache\/?utm_source=openai))\n\nEin Page Cache speichert dagegen vollst\u00e4ndige Seitenantworten. Bedient er eine Anfrage, muss WordPress f\u00fcr diese Anfrage nicht unbedingt den gleichen Anwendungspfad durchlaufen. Ein Object Cache ersetzt au\u00dferdem weder Browser-Cache noch PHP-Opcode-Cache. Das alleinige Setzen von WP_CACHE aktiviert keinen Redis Object Cache. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/advanced-administration\/wordpress\/wp-config\/?utm_source=openai))\n\nF\u00fcr Transients gilt: Mit persistentem Object Cache k\u00f6nnen sie dar\u00fcber gespeichert werden; ohne ihn liegen sie normalerweise in der Datenbank. Eine vorgegebene Ablaufzeit ist keine Garantie f\u00fcr eine Mindestverf\u00fcgbarkeit: Ein Transient kann vorher verschwinden und muss regenerierbar sein. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/news\/2024\/06\/an-introduction-to-the-transients-api\/?utm_source=openai))\n\n## Funktionsweise und Messgr\u00f6\u00dfen\n\nEin Cache-Hit bedeutet, dass ein gesuchter Eintrag auf der jeweiligen Cache-Ebene gefunden wurde; ein Miss bedeutet, dass er dort nicht gefunden wurde. Die Quote lautet grunds\u00e4tzlich:\n\nHit Rate = Hits \/ (Hits + Misses) \u00d7 100\n\nIst die Summe aus Hits und Misses null, ist die Quote f\u00fcr dieses Fenster nicht definiert. Ein Miss ist nicht automatisch ein Fehler: Ein noch nicht bef\u00fcllter Cache oder ein abgelaufener Eintrag f\u00fchrt erwartbar zu einem Miss.\n\nWichtig ist die Trennung zweier Ebenen:\n\n- WordPress- beziehungsweise Plugin-Metriken k\u00f6nnen Cache-Zugriffe aus Sicht der jeweiligen Implementierung erfassen. Welche Zugriffe und Zeitr\u00e4ume ein Plugin tats\u00e4chlich z\u00e4hlt, muss anhand seiner Dokumentation und Version gepr\u00fcft werden.\n- Redis meldet mit keyspace_hits und keyspace_misses erfolgreiche beziehungsweise erfolglose Key-Lookups im Redis-Keyspace. Auch ein fehlgeschlagener EXISTS-Aufruf z\u00e4hlt als Miss. Die Redis-Quote ist deshalb nicht automatisch die WordPress-Object-Cache-Quote. ([redis.io](https:\/\/redis.io\/docs\/latest\/reference\/eviction\/?utm_source=openai))\n\nDie Werte k\u00f6nnen au\u00dferdem unterschiedliche Nutzungen einer gemeinsam verwendeten Redis-Instanz umfassen. Bei Cluster- oder Replikationsumgebungen muss dokumentiert werden, welche Knoten die Messung enth\u00e4lt. F\u00fcr eine Gesamtrate m\u00fcssen passende Hit- und Miss-Z\u00e4hler addiert werden; der ungewichtete Mittelwert einzelner Prozentzahlen kann irref\u00fchren.\n\nDie WordPress-Core-Methode z\u00e4hlt in ihrer eigenen Implementierung Treffer und Fehlversuche. Ein Drop-in darf die Implementierung ersetzen; deshalb deren Z\u00e4hlweise nicht aus dem Core-Verhalten ableiten. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/WP_Object_Cache\/get\/?utm_source=openai))\n\n## Messkonzept und sichere Beispiele\n\nF\u00fcr eine aussagekr\u00e4ftige Redis-Auswertung zwei Ablesungen derselben Instanz zu Beginn und Ende eines definierten Zeitfensters erfassen. Aus den Differenzen der Z\u00e4hler berechnen:\n\nIntervall-Hit-Rate = \u0394Hits \/ (\u0394Hits + \u0394Misses) \u00d7 100\n\nBeispiel, ausdr\u00fccklich keine Messung: Steigen Hits im Fenster um 900 und Misses um 100, ergibt das 90 Prozent bei 1.000 gez\u00e4hlten Lookups. Die Quote belegt weder 90 Prozent schnellere Seiten noch, dass 900 Datenbankabfragen eingespart wurden.\n\nWenn ein Z\u00e4hler zur\u00fcckgeht, etwa nach Neustart oder Zur\u00fccksetzen der Statistik, ist die Differenz \u00fcber diesen Bruch nicht g\u00fcltig. Das Fenster muss neu begonnen beziehungsweise anhand von Betriebsdaten aufgeteilt werden. Parallel zu Quote und Anzahl der Lookups sollten mindestens Antwortzeiten f\u00fcr relevante Request-Typen, Datenbanklast und Fehlerraten betrachtet werden. Redis nennt au\u00dferdem evicted_keys und expired_keys als Diagnosewerte; deren Aussage ist im Kontext der jeweiligen Konfiguration zu pr\u00fcfen. ([redis.io](https:\/\/redis.io\/docs\/latest\/reference\/eviction\/?utm_source=openai))\n\nGeeignete, lesende Abfragen:\n\n- Terminalbefehl im WordPress-Verzeichnis: wp cache type  \n  Versucht, die verwendete Object-Cache-Implementierung zu bestimmen. Das Ergebnis allein beweist nicht, dass jeder relevante Zugriff persistent gespeichert wird. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/cli\/commands\/cache\/?utm_source=openai))\n- Redis-CLI-Befehle: INFO stats und INFO memory  \n  Liefern, sofern Berechtigungen und Betriebsumgebung es erlauben, Statistik- beziehungsweise Speicherinformationen. Zugangsdaten nicht in Befehlsbeispiele schreiben und Ausgaben vor Weitergabe auf sensible Betriebsinformationen pr\u00fcfen. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n\nKeine Flush-, Schreib- oder Lasttestbefehle auf produktiven Systemen als notwendige Diagnose darstellen. Ein Cache-Flush kann die Aussagekraft durch einen Kaltstart ver\u00e4ndern und andere Anwendungen betreffen.\n\n## Praxisf\u00e4lle f\u00fcr den sp\u00e4teren Artikel\n\n1. Kaltstart nach Deployment oder Neustart. Anfangs fehlen Eintr\u00e4ge; anschlie\u00dfend kann sich die Quote bei wiederkehrenden Zugriffen stabilisieren. Kalt- und Warmphase getrennt auswerten, statt beide in einem langen Durchschnitt zu verstecken.\n\n2. Dynamischer Shop oder eingeloggter Bereich. Ein Page Cache bedient m\u00f6glicherweise nicht alle relevanten Anfragen. Hier gezielt vergleichbare dynamische Requests, Datenbanklast und Latenz betrachten. Eine hohe Redis-Quote allein sagt nicht, ob Warenkorb- oder Kontoantworten schnell und korrekt sind.\n\n3. \u00dcberwiegend statische Website mit Page Cache. Wenn viele Seiten bereits vor WordPress beantwortet werden, kann ein persistenter Object Cache nur die verbleibenden WordPress-Requests beeinflussen. Der Nutzen muss f\u00fcr diese Requests und f\u00fcr die gesamte Website getrennt beurteilt werden.\n\n4. Gemeinsam genutztes Redis. Weitere Websites oder Anwendungen k\u00f6nnen die globalen Redis-Z\u00e4hler beeinflussen. Ohne geeignete getrennte Telemetrie ist eine Zuordnung der Redis-Hit-Rate zu einer einzelnen Website nicht belastbar.\n\n5. Niedrige Quote trotz ausreichendem Speicher. H\u00e4ufige Erstzugriffe, kurze Lebensdauer oder die Eigenheiten der Zugriffsverteilung sind m\u00f6gliche Erkl\u00e4rungen. Hohe expired_keys k\u00f6nnen ein Hinweis sein, aber nicht allein beweisen, dass eine TTL falsch gew\u00e4hlt ist. Eine Verl\u00e4ngerung kann die Datenaktualit\u00e4t verschlechtern. ([redis.io](https:\/\/redis.io\/docs\/latest\/reference\/eviction\/?utm_source=openai))\n\n## Zielwerte und Entscheidungen\n\nKeine pauschale Schwelle wie \u201emindestens 90 Prozent\u201c als technische Anforderung oder Herstellerempfehlung formulieren. Redis empfiehlt, die beobachtete Quote mit der erwarteten Zugriffsverteilung der konkreten Anwendung zu vergleichen. Eine hohe Quote kann bei g\u00fcnstigen, h\u00e4ufigen Treffern entstehen, w\u00e4hrend wenige teure Misses die Latenz dominieren. ([redis.io](https:\/\/redis.io\/docs\/latest\/reference\/eviction\/?utm_source=openai))\n\nDer Artikel kann stattdessen einen Entscheidungsrahmen anbieten:\n\n- Quote und Zugriffszahl \u00fcber repr\u00e4sentative Zeitfenster erfassen; auff\u00e4llige Warm-up-Phasen separat kennzeichnen.\n- Einen Ausgangswert mit Antwortzeit, Datenbanklast und Fehlerrate verbinden.\n- Nur eine \u00c4nderung nach Freigabe und m\u00f6glichst zuerst in einer geeigneten Testumgebung untersuchen.\n- Danach vergleichbare Zeitr\u00e4ume und Request-Mischungen gegen\u00fcberstellen. Eine verbesserte Quote ohne relevanten Nutzen f\u00fcr Latenz oder Last rechtfertigt zus\u00e4tzliche Komplexit\u00e4t nicht automatisch.\n- Redis und andere persistente Backends als Alternativen darstellen, nicht als Voraussetzung jeder WordPress-Installation. Kosten, Betriebsaufwand, Ausfallszenarien und Hosting-Unterst\u00fctzung m\u00fcssen im Einzelfall gepr\u00fcft werden. WordPress nennt neben Redis auch andere Backend-Ans\u00e4tze. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/wp_object_cache\/?utm_source=openai))\n\n## Grenzen, typische Fehler und Tabellen\n\nTypische Fehler sind die Gleichsetzung von Redis- und WordPress-Quote, die Auswertung von Gesamtz\u00e4hlern ohne Zeitfenster, Prozentvergleiche ohne Stichprobengr\u00f6\u00dfe und das Vermischen von Kalt- und Warmphase. Ebenfalls problematisch: eine l\u00e4ngere Lebensdauer ausschlie\u00dflich zur Quotenerh\u00f6hung w\u00e4hlen oder Cache-Inhalte als dauerhaft verf\u00fcgbare Prim\u00e4rdaten behandeln.\n\nF\u00fcr Entwickler ist bei wp_cache_get der Parameter found wichtig: Ein gespeicherter Wert false muss von einem nicht gefundenen Eintrag unterschieden werden. Bei Funktionen wie wp_cache_flush_group sind F\u00e4higkeiten des konkreten Backends mit wp_cache_supports zu pr\u00fcfen; ein unbedachter Flush kann mehr l\u00f6schen als beabsichtigt. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/WP_Object_Cache\/get\/?utm_source=openai))\n\nGeeignete Tabellen f\u00fcr den Artikel:\n\n- Cache-Ebenen: gespeicherte Daten, Geltungsbereich und welche Metrik jeweils etwas aussagt.\n- Redis-Kennzahlen: keyspace_hits, keyspace_misses, expired_keys und evicted_keys; jeweils Bedeutung und Interpretationsgrenze.\n- Szenarien: Beobachtung, m\u00f6gliche Ursachen, n\u00e4chste sichere Pr\u00fcfung; keine automatischen Diagnosen.\n- Messprotokoll: Zeitraum, Instanz beziehungsweise Knoten, \u0394Hits, \u0394Misses, Quote, Request-Typ und begleitende Latenz.\n\nKeinen Chart vorschlagen: F\u00fcr einen belastbaren Verlauf liegen keine Messdaten vor. Das Rechenbeispiel gen\u00fcgt, um die Formel zu erkl\u00e4ren.\n\n## Quellenbestand\n\n- S1: WordPress Developer Resources, WP_Object_Cache \u2014 Grundlagen, Persistenz und Backend-F\u00e4higkeiten. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/wp_object_cache\/?utm_source=openai))\n- S2: Redis-Dokumentation, Key eviction \u2014 Hit-Rate-Formel und Diagnosehinweise. ([redis.io](https:\/\/redis.io\/docs\/latest\/reference\/eviction\/?utm_source=openai))\n- S3: Redis-Dokumentation, INFO \u2014 Definitionen der Statistik- und Speicherfelder. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n- S4: WordPress Developer Resources, WP_Object_Cache::get() \u2014 Core-Z\u00e4hlung und found-Parameter. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/WP_Object_Cache\/get\/?utm_source=openai))\n- S5: WordPress Developer Resources, wp cache \u2014 WP-CLI-Unterbefehle. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/cli\/commands\/cache\/?utm_source=openai))\n- S6: WordPress Common APIs Handbook, Transients \u2014 Ablauf und Regenerierbarkeit. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/apis\/transients\/?utm_source=openai))\n\nEs wurden keine internen Artikel oder I-IDs bereitgestellt; interne Verlinkungen sind daher nicht eingeplant.","_wh_make_sources":{"S1":{"id":"S1","url":"https:\/\/developer.wordpress.org\/reference\/classes\/wp_object_cache\/?utm_source=openai","title":"WP_Object_Cache \u2013 Class | Developer.WordPress.org"},"S2":{"id":"S2","url":"https:\/\/developer.wordpress.org\/advanced-administration\/wordpress\/wp-config\/?utm_source=openai","title":"Editing wp-config.php \u2013 Advanced Administration Handbook | Developer.WordPress.org"},"S3":{"id":"S3","url":"https:\/\/developer.wordpress.org\/news\/2024\/06\/an-introduction-to-the-transients-api\/?utm_source=openai","title":"An Introduction to the Transients API \u2013 WordPress Developer Blog"},"S4":{"id":"S4","url":"https:\/\/redis.io\/docs\/latest\/reference\/eviction\/?utm_source=openai","title":"Key Eviction | Docs"},"S5":{"id":"S5","url":"https:\/\/developer.wordpress.org\/reference\/classes\/WP_Object_Cache\/get\/?utm_source=openai","title":"WP_Object_Cache::get() \u2013 Method | Developer.WordPress.org"},"S6":{"id":"S6","url":"https:\/\/developer.wordpress.org\/cli\/commands\/cache\/?utm_source=openai","title":"wp cache \u2013 WP-CLI Command | Developer.WordPress.org"},"S7":{"id":"S7","url":"https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai","title":"INFO | Docs"},"S8":{"id":"S8","url":"https:\/\/developer.wordpress.org\/apis\/transients\/?utm_source=openai","title":"Transients \u2013 Common APIs Handbook | Developer.WordPress.org"}},"_wh_make_usage":{"research":{"input_tokens":13586,"output_tokens":2679,"response_id":"resp_05e37f38e5ef338a016aeb37587b1087d2a30465339e023b90","model":"gpt-6.1-terra","search_calls":1},"plan_c0d0cebf6eba5845f08d9651a292169c":{"input_tokens":5805,"output_tokens":1509,"response_id":"resp_005fd6d0c87b64ff016aeb3783264887d2842d8899119e72a5","model":"gpt-6.1-terra","search_calls":0},"part1_5f7d78d2b3d12019dfeb20b2e03d4d19":{"input_tokens":8254,"output_tokens":1761,"response_id":"resp_0d5f642a9d7515c7016aeb3797959087d2afef65400264c42f","model":"gpt-6.1-terra","search_calls":0},"part2_55f0a5046ca2fb35eaf7b332efa7f6e5":{"input_tokens":8294,"output_tokens":2060,"response_id":"resp_0c2c34415db3f640016aeb37ad9cf887d2b4b277ee8c4247a5","model":"gpt-6.1-terra","search_calls":0},"part3_c77b98b0daafa2dca87a757b4518feae":{"input_tokens":8356,"output_tokens":1580,"response_id":"resp_08aadc4099d4799c016aeb37c9f50487d2ac22d5437ebc18f8","model":"gpt-6.1-terra","search_calls":0},"package_11a4e9c894c8e5e63c8748041adb1d2e":{"input_tokens":15113,"output_tokens":1626,"response_id":"resp_0bd07caab12a8a26016aeb37e3e59487d2a7114548914885ca","model":"gpt-6.1-terra","search_calls":0},"review_069e443c8af021aba56b45c97be196a1":{"input_tokens":38185,"output_tokens":744,"response_id":"resp_044e0b28558825bf016aeb37fcb0ec87d2bb7b66b81baa8e0e","model":"gpt-6.1-sol","search_calls":4},"image_hero":{"input_tokens":164,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail1":{"input_tokens":168,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail2":{"input_tokens":171,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0}},"_wh_make_last_error":"","_wh_make_write_intent":{"before":{"content_md5":"50a01b1c31326042935e147f6c9cdab4","title":"WordPress Object Cache Hit Rate: Significance and Meaningful Target Values","slug":"wordpress-object-cache-hit-rate","excerpt":"A high object cache hit rate does not guarantee a fast WordPress website. The key factors are the scope of measurement, the time period, and the number of requests, as well as the impact on response time and database load.","status":"draft","featured_media":0},"expected":{"content_md5":"038d560f6167904965544a3462adf644","title":"WordPress Object Cache Hit Rate: Significance and Meaningful Target Values","slug":"wordpress-object-cache-hit-rate","excerpt":"A high object cache hit rate does not guarantee a fast WordPress website. The key factors are the scope of measurement, the time period, and the number of requests, as well as the impact on response time and database load.","status":"draft","featured_media":22172},"at":"2026-11-04T13:51:29+00:00"},"_wh_make_design_version":"2.1.19","rank_math_title":"WordPress Object Cache Hit Rate richtig bewerten","_wh_make_doc":{"title":"WordPress Object Cache Hit Rate: Significance and Meaningful Target Values","slug":"wordpress-object-cache-hit-rate","excerpt":"A high object cache hit rate does not guarantee a fast WordPress website. The key factors are the scope of measurement, the time period, and the number of requests, as well as the impact on response time and database load.","seo":{"title":"Accurately Evaluating the WordPress Object Cache Hit Rate","description":"Accurately measure the WordPress Object Cache and Redis hit rate, and determine a target range that suits your website and its requests.","focus_keyword":"WordPress Object Cache Hit Rate"},"lead":[{"kind":"text","text":"Die Hit Rate des WordPress Object Cache zeigt, welcher Anteil der erfassten Cache-Zugriffe einen Eintrag findet. ","ref":""},{"kind":"strong","text":"Ein allgemeing\u00fcltiger Zielwert existiert nicht.","ref":""},{"kind":"text","text":" Eine Redis Hit Rate misst zudem nicht automatisch dasselbe wie die Anzeige eines WordPress-Plugins. Aussagekr\u00e4ftig wird die Quote erst, wenn Messbereich, Zeitraum und Zahl der Zugriffe bekannt sind. Vergleiche sie mit Antwortzeiten wichtiger Anfragen, Datenbanklast und Fehlerrate: So erkennst du, ob eine \u00c4nderung deiner Website tats\u00e4chlich n\u00fctzt, statt lediglich eine Prozentzahl zu verbessern.","ref":""},{"kind":"citation","text":"","ref":"S4"},{"kind":"citation","text":"","ref":"S1"}],"images":{"hero":{"prompt":"Sachliche redaktionelle Illustration zur Aussagekraft einer Cache-Trefferquote: In seitlicher Ansicht f\u00fchrt eine Reihe kleiner, matter Papierformen zu einem flachen Fach mit wenigen vorhandenen Formen. Einige Anfragen finden eine passende Form, andere f\u00fchren sichtbar am Fach vorbei. Die Anordnung verdeutlicht Treffer und fehlende Eintr\u00e4ge, ohne konkrete Anzahlen, Messwerte oder technische Abl\u00e4ufe zu behaupten. Gro\u00dfz\u00fcgiger heller Hintergrund, gedeckte erdige Farben, ruhige asymmetrische Komposition. Keine Menschen, keine Schrift, Zahlen, Logos, Diagramme oder Wasserzeichen.","alt":"KI-generierte Illustration von passenden und fehlenden Formen an einem Cache-Fach als Sinnbild f\u00fcr Hits und Misses.","caption":"KI-generierte Illustration: Treffer und Misses beschreiben Zugriffe auf eine bestimmte Cache-Ebene, nicht unmittelbar die Geschwindigkeit einer Website.","filename_base":"wordpress-object-cache-hits-misses","section_id":"","after_block":0},"detail1":{"prompt":"Fotografisches KI-generiertes Symbolbild zum Messprotokoll einer Cache-Auswertung: Auf einem leicht benutzten Holzschreibtisch liegen ein geschlossenes schlichtes Notizbuch, ein Stift und ein einfacher analoger K\u00fcchenwecker nebeneinander. Enge schr\u00e4ge Draufsicht auf die Gegenst\u00e4nde, weiches vorhandenes Tageslicht, nat\u00fcrliche Materialien und kleine Gebrauchsspuren. Der Wecker symbolisiert das abgegrenzte Zeitfenster; es wird keine tats\u00e4chliche Messung dargestellt. Keine Personen, Monitore, lesbaren Ziffern oder Texte, keine Logos und Wasserzeichen.","alt":"KI-generiertes Symbolbild eines Notizbuchs mit Stift und analogem Wecker auf einem gebrauchten Schreibtisch.","caption":"KI-generiertes Symbolbild: Ein festgehaltenes Zeitfenster geh\u00f6rt zu einem nachvollziehbaren Messprotokoll.","filename_base":"cache-messprotokoll-zeitfenster","section_id":"messprotokoll-kennzahlen","after_block":4},"detail2":{"prompt":"Sachliche redaktionelle Illustration zum Vergleich von Kalt- und Warmphase eines Object Cache: Zwei nebeneinander angeordnete Ansichten desselben schlichten Fachs zeigen links wenige und rechts mehr darin liegende kleine Formen. Davor liegen jeweils einige passende Anfrageformen; die Darstellung deutet die allm\u00e4hliche Bef\u00fcllung an, ohne feste Trefferquoten oder einen zeitlichen Verlauf als Messung auszugeben. Flache matte Papieroptik, frontale Perspektive, ged\u00e4mpftes Ocker und Grau auf hellem Grund. Keine Menschen, Schrift, Zahlen, Logos, Diagrammachsen oder Wasserzeichen.","alt":"KI-generierte Illustration eines wenig und eines st\u00e4rker gef\u00fcllten Fachs f\u00fcr Kalt- und Warmphase des Cache.","caption":"KI-generierte Illustration: Kalt- und Warmphase getrennt zu betrachten verhindert, dass ein Durchschnitt die Anlaufzeit verdeckt.","filename_base":"object-cache-kaltphase-warmphase","section_id":"szenarien-einordnen","after_block":1}},"chart":null,"social":{"facebook":"Sind 90 Prozent Cache Hit Rate genug? Eine allgemeine Mindestquote hilft bei WordPress wenig. Entscheidend sind Messbereich, Zugriffszahl und die Auswirkungen auf wichtige Anfragen.","instagram":"Eine hohe Hit Rate ist noch kein Beweis f\u00fcr eine schnelle Website. Miss Cache-Zugriffe im Kontext von Zeitraum, Antwortzeit und Datenbanklast.","tiktok":"Redis Hit Rate gleich WordPress Performance? Nicht automatisch. Erfahre, warum Messbereich und Lastprofil wichtiger sind als eine pauschale Prozentzahl.","youtube":"WordPress Object Cache Hit Rate richtig einordnen: Was Redis tats\u00e4chlich z\u00e4hlt, wie du ein Intervall berechnest und warum es keinen universellen Zielwert gibt.","threads":"Eine gute Cache-Hit-Rate kann teure Misses verdecken. Vergleiche deshalb nicht nur Prozentwerte, sondern auch Zugriffszahlen, Antwortzeiten und Datenbanklast.","x":"Eine hohe Redis Hit Rate beweist weder schnelle WordPress-Seiten noch eingesparte Datenbankabfragen. Miss ein definiertes Intervall und vergleiche Quote und Zugriffszahl mit Latenz, Datenbanklast und Fehlerrate."},"avatar_script":"Die Hit Rate zeigt, wie h\u00e4ufig ein gesuchter Cache-Eintrag gefunden wird. Sie ist aber kein direkter Ma\u00dfstab f\u00fcr die Geschwindigkeit deiner WordPress-Website. Besonders wichtig: Redis z\u00e4hlt Key-Lookups seiner Instanz. Diese Quote kann sich von der Anzeige deines WordPress-Plugins unterscheiden und auch Zugriffe anderer Anwendungen enthalten. F\u00fcr eine Intervallmessung liest du Hits und Misses zu Beginn und am Ende desselben Zeitfensters ab und berechnest die Differenzen. Notiere auch die Zahl der Zugriffe. Einen allgemeinen Zielwert gibt es nicht. Vergleiche stattdessen \u00e4hnliche Anfragen und Zeitr\u00e4ume und achte zus\u00e4tzlich auf Antwortzeiten, Datenbanklast und Fehler. Eine h\u00f6here Quote allein rechtfertigt nicht automatisch mehr Betriebsaufwand.","version_note":"Quellenstand der bereitgestellten Recherche vom 4. November 2026; Plugin-Z\u00e4hlweise und Redis-Konfiguration f\u00fcr die jeweils eingesetzte Version pr\u00fcfen.","sections":[{"id":"object-cache-grundlagen","heading":"Was der WordPress Object Cache speichert","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der WordPress Object Cache h\u00e4lt Daten unter einem Schl\u00fcssel und innerhalb einer Gruppe bereit. Fragt WordPress denselben Wert erneut ab, kann es ihn aus dem Cache beziehen, statt die zugrunde liegende Arbeit erneut auszuf\u00fchren. Dazu geh\u00f6ren beispielsweise Daten, die sonst aus der Datenbank gelesen oder erneut berechnet werden m\u00fcssten.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die eingebaute Core-Implementierung ist standardm\u00e4\u00dfig ","ref":""},{"kind":"strong","text":"requestgebunden","ref":""},{"kind":"text","text":": Sie h\u00e4lt ihre Eintr\u00e4ge w\u00e4hrend eines einzelnen Requests vor. Ein sp\u00e4terer Seitenaufruf erh\u00e4lt dadurch nicht automatisch Zugriff auf die zuvor gespeicherten Werte. Trotzdem kann der Cache schon innerhalb eines Requests wiederholte Zugriffe vermeiden.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Drop-in kann die Core-Implementierung durch einen ","ref":""},{"kind":"strong","text":"persistenten Object Cache","ref":""},{"kind":"text","text":" ersetzen. Dann k\u00f6nnen geeignete Eintr\u00e4ge \u00fcber einzelne Requests hinaus erhalten bleiben. Redis ist eine m\u00f6gliche Backend-Option, aber keine Voraussetzung f\u00fcr WordPress; auch andere Backend-Ans\u00e4tze sind m\u00f6glich. Selbst mit einem persistenten Drop-in k\u00f6nnen bestimmte Gruppen weiterhin nur f\u00fcr den aktuellen Request gelten.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Transients sind eine weitere M\u00f6glichkeit, zeitlich begrenzt ben\u00f6tigte Daten abzulegen. Mit einem persistenten Object Cache k\u00f6nnen sie dort gespeichert werden, ohne ihn normalerweise in der Datenbank. Ihre Ablaufzeit bezeichnet keine garantierte Mindestverf\u00fcgbarkeit: Ein Wert kann fr\u00fcher verschwinden. Anwendungscode muss deshalb mit einem fehlenden Transient rechnen und den Wert bei Bedarf regenerieren k\u00f6nnen.","ref":""},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S8"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die sp\u00e4tere Bewertung einer Trefferquote ist diese Unterscheidung entscheidend: Ein Zugriff auf den lokalen Cache w\u00e4hrend eines Requests und ein Zugriff auf ein externes Backend sind nicht zwangsl\u00e4ufig dieselbe Messgr\u00f6\u00dfe. Pr\u00fcfe daher zun\u00e4chst, welche Implementierung tats\u00e4chlich verwendet wird und welche Daten sie persistent behandelt.","ref":""}]}]},{"id":"cache-ebenen","heading":"Object Cache und Page Cache unterscheiden","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem Seitenaufruf kann ein ","ref":""},{"kind":"strong","text":"Page Cache","ref":""},{"kind":"text","text":" eine bereits erzeugte Seitenantwort ausliefern. Wird die Anfrage dort beantwortet, muss sie nicht denselben WordPress-Anwendungspfad durchlaufen wie eine ungecachte Anfrage. Der Object Cache arbeitet dagegen innerhalb der Anwendung mit einzelnen zwischengespeicherten Daten, nicht mit der vollst\u00e4ndigen Seitenantwort.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Stell dir eine \u00f6ffentlich erreichbare Artikelseite vor: Liegt ihre Antwort im Page Cache, kann sie direkt ausgeliefert werden. Muss WordPress die Seite dagegen erzeugen, kann der Object Cache bei wiederholten Datenzugriffen helfen. Welche Arbeit dadurch tats\u00e4chlich entf\u00e4llt, h\u00e4ngt von der Anfrage, den gespeicherten Eintr\u00e4gen und der jeweiligen Implementierung ab.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das hat Folgen f\u00fcr die Interpretation: Eine gute Object-Cache-Quote beschreibt nur die erfassten Cache-Zugriffe. Sie sagt nicht unmittelbar, wie viele Besucher bereits eine fertige Antwort aus dem Page Cache erhalten oder wie schnell die gesamte Website reagiert. Bei starkem Page Caching kann der Nutzen des Object Cache vor allem bei den verbleibenden WordPress-Requests sichtbar werden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch Browser- und Opcode-Cache erf\u00fcllen andere Aufgaben. Der Browser-Cache h\u00e4lt Ressourcen beim Besucher vor; ein PHP-Opcode-Cache speichert kompilierten PHP-Code. Beide ersetzen weder die Speicherung einzelner Anwendungsdaten im Object Cache noch die Auslieferung einer vollst\u00e4ndigen Antwort aus einem Page Cache.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Konstante ","ref":""},{"kind":"code","text":"WP_CACHE","ref":""},{"kind":"text","text":" allein aktiviert keinen Redis Object Cache. F\u00fcr einen persistenten Object Cache brauchst du eine passende Implementierung und deren unterst\u00fctzte Konfiguration. Ein erg\u00e4nzendes Beispiel f\u00fcr das Zusammenspiel mehrerer Ebenen findest du im Beitrag zur ","ref":""},{"kind":"internal_link","text":"AccelerateWP Cache Engine","ref":"I1"},{"kind":"text","text":".","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S2"}]}]},{"id":"hit-rate-grundlagen","heading":"Was Hits und Misses aussagen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein ","ref":""},{"kind":"strong","text":"Hit","ref":""},{"kind":"text","text":" liegt vor, wenn ein gesuchter Eintrag auf der betrachteten Cache-Ebene gefunden wird. Ein ","ref":""},{"kind":"strong","text":"Miss","ref":""},{"kind":"text","text":" bedeutet, dass er dort nicht gefunden wird. Die Hit Rate setzt die Treffer ins Verh\u00e4ltnis zu allen gez\u00e4hlten Treffern und Fehlversuchen: Hits \/ (Hits + Misses) \u00d7 100. Gibt es weder Hits noch Misses, ist die Quote f\u00fcr diesen Zeitraum nicht definiert.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Miss ist nicht automatisch ein technischer Fehler. Beim ersten Zugriff kann ein Eintrag noch fehlen; auch nach seinem Ablauf muss er gegebenenfalls neu beschafft oder erzeugt werden. Entscheidend ist, welche Folgen solche Fehlversuche im konkreten Ablauf haben und ob sich Zugriffe \u00fcberhaupt sinnvoll wiederholen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Core-Methode von WordPress z\u00e4hlt in ihrer eigenen Implementierung Cache-Treffer und Fehlversuche. Ein Drop-in kann diese Implementierung jedoch ersetzen. Deshalb l\u00e4sst sich aus der Core-Z\u00e4hlweise nicht sicher ableiten, was eine Plugin-Anzeige erfasst: Pr\u00fcfe f\u00fcr die eingesetzte Version, welche Zugriffe und welchen Zeitraum ihre Kennzahl umfasst.","ref":""},{"kind":"citation","text":"","ref":"S5"},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Redis meldet mit ","ref":""},{"kind":"code","text":"keyspace_hits","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"keyspace_misses","ref":""},{"kind":"text","text":" erfolgreiche beziehungsweise erfolglose Key-Lookups im Redis-Keyspace. Auch ein fehlgeschlagener ","ref":""},{"kind":"code","text":"EXISTS","ref":""},{"kind":"text","text":"-Aufruf kann als Miss z\u00e4hlen. Diese Redis Hit Rate ist daher nicht automatisch mit einer WordPress- oder Plugin-Quote gleichzusetzen.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Kommt eine Redis-Instanz mehreren Websites oder Anwendungen zugute, k\u00f6nnen ihre Z\u00e4hler deren Zugriffe gemeinsam abbilden. Eine globale Quote l\u00e4sst sich dann ohne geeignete getrennte Telemetrie nicht belastbar einer einzelnen WordPress-Website zuordnen. F\u00fcr jeden Vergleich solltest du deshalb festhalten, welche Ebene und welche Instanz die Zahlen \u00fcberhaupt beschreiben.","ref":""}]}]},{"id":"messung-vorbereiten","heading":"Messbereich und Zugriff sicher pr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Kl\u00e4re vor der Messung, welche Object-Cache-Implementierung WordPress verwendet. Wenn WP-CLI verf\u00fcgbar ist und du Zugriff auf das WordPress-Verzeichnis hast, kannst du dort eine lesende Bestandsaufnahme mit folgendem Befehl beginnen:","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"code","language":"bash","code":"wp cache type","source_ids":["S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Das Ergebnis hilft bei der Einordnung der Implementierung, beweist aber nicht, dass jeder relevante Zugriff persistent gespeichert wird. WordPress erlaubt einem Drop-in, den Core-Cache zu ersetzen; zugleich k\u00f6nnen einzelne Gruppen nicht persistent sein. Halte deshalb auch das eingesetzte Drop-in beziehungsweise Plugin und seine Version fest. ","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Pr\u00fcfe in der Dokumentation der konkreten Version, welche Zugriffe ihre angezeigten Hits und Misses umfassen und \u00fcber welchen Zeitraum sie gez\u00e4hlt werden. Eine Plugin-Quote l\u00e4sst sich nur dann sinnvoll mit einer anderen Kennzahl vergleichen, wenn Messbereich und Z\u00e4hlweise bekannt sind. Besonders wichtig ist, ob die Anzeige nur einen Request oder ein l\u00e4ngeres Fenster beschreibt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr Redis kannst du, sofern Verbindung und Berechtigungen vorhanden sind, in einer Redis-CLI-Sitzung die Statistik- und Speicherinformationen lesend abfragen. Die folgenden Befehle enthalten bewusst keine Zugangsdaten:","ref":""},{"kind":"citation","text":"","ref":"S7"}]},{"type":"code","language":"redis","code":"INFO stats\nINFO memory","source_ids":["S7"]},{"type":"paragraph","runs":[{"kind":"text","text":"Dokumentiere den ","ref":""},{"kind":"strong","text":"Messbereich","ref":""},{"kind":"text","text":": Welche Instanz oder Knoten wurden abgefragt, und welche anderen Websites oder Anwendungen nutzen sie? Globale Redis-Z\u00e4hler lassen sich bei gemeinsamer Nutzung nicht ohne Weiteres einer einzelnen Website zuordnen. Pr\u00fcfe Ausgaben vor der Weitergabe auf sensible Betriebsinformationen; weder ein Flush noch ein Lasttest ist f\u00fcr diese Bestandsaufnahme erforderlich.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Fehlt dir der Zugriff auf die Redis-CLI, frage deinen Hosting-Anbieter nach den verf\u00fcgbaren Metriken und ihrem Geltungsbereich. Auch ein Dashboard ist nur dann eine brauchbare Grundlage, wenn klar ist, ob es dieselbe Instanz, einzelne Knoten oder bereits aggregierte Werte zeigt.","ref":""}]}]},{"id":"intervall-berechnen","heading":"Redis Hit Rate im Intervall berechnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Redis-Statistiken sind Z\u00e4hlerst\u00e4nde, keine fertige Aussage \u00fcber einen bestimmten Messzeitraum. Lies f\u00fcr eine Intervallauswertung die Werte f\u00fcr ","ref":""},{"kind":"code","text":"keyspace_hits","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"keyspace_misses","ref":""},{"kind":"text","text":" zu Beginn und am Ende desselben festgelegten Zeitfensters von derselben Instanz ab. Notiere beide Zeitpunkte und die zugeh\u00f6rige Instanz, damit die Ablesungen zusammenpassen. ","ref":""},{"kind":"citation","text":"","ref":"S7"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ziehe anschlie\u00dfend f\u00fcr jeden Z\u00e4hler den Anfangswert vom Endwert ab. Die ","ref":""},{"kind":"strong","text":"Intervall-Hit-Rate","ref":""},{"kind":"text","text":" lautet: \u0394Hits \/ (\u0394Hits + \u0394Misses) \u00d7 100. Das Zeichen \u0394 steht f\u00fcr die jeweilige Differenz. Sind beide Differenzen null, gab es in diesem Fenster keine gez\u00e4hlten Lookups; die Quote ist dann nicht definiert, statt null Prozent zu betragen. ","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein illustratives Rechenbeispiel, keine Messung: Steigen die Hits um 900 und die Misses um 100, ergeben sich 90 Prozent bei insgesamt 1.000 gez\u00e4hlten Lookups. Das hei\u00dft weder, dass Seiten um 90 Prozent schneller sind, noch dass genau 900 Datenbankabfragen eingespart wurden. Redis z\u00e4hlt Key-Lookups; deren Bedeutung f\u00fcr die Anwendung h\u00e4ngt vom jeweiligen Zugriff ab. ","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Geht einer der Z\u00e4hler zwischen den Ablesungen zur\u00fcck, ist die einfache Differenz \u00fcber diesen Bruch nicht g\u00fcltig. Ein Neustart oder das Zur\u00fccksetzen von Statistiken kann dazu f\u00fchren. Beginne das Messfenster neu oder teile es anhand verl\u00e4sslicher Betriebsdaten am Bruch auf, statt einen negativen Wert in die Formel einzusetzen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei mehreren Knoten berechnest du zun\u00e4chst f\u00fcr jeden passenden Knoten die Differenzen \u00fcber denselben Zeitraum. Addiere dann die Hits und Misses getrennt und bilde daraus die Gesamtquote. Ein ungewichteter Mittelwert der einzelnen Prozentwerte behandelt einen Knoten mit wenigen Lookups sonst genauso wie einen mit vielen; das kann das Gesamtbild erheblich verzerren.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Halte dabei fest, welche Knoten tats\u00e4chlich einbezogen sind und welche Rolle sie in der Umgebung haben. Eine so berechnete Gesamtrate beschreibt nur die ausgew\u00e4hlten Z\u00e4hler und deren Nutzer; sie wird nicht allein durch die Aggregation zu einer spezifischen WordPress-Object-Cache-Quote.","ref":""}]}]},{"id":"messprotokoll-kennzahlen","heading":"Messprotokoll und Redis-Kennzahlen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Neben Hits und Misses helfen weitere Redis-Z\u00e4hler bei der Einordnung. Auch hier sind Differenzen im gew\u00e4hlten Zeitraum aussagekr\u00e4ftiger als isolierte Gesamtst\u00e4nde. Die folgende Tabelle trennt die Bedeutung der Werte von Schlussfolgerungen, die sie allein nicht tragen. ","ref":""},{"kind":"citation","text":"","ref":"S4"},{"kind":"citation","text":"","ref":"S7"}]},{"type":"table","caption":"Redis-Kennzahlen und Grenzen ihrer Interpretation","headers":["Kennzahl","Bedeutung","Interpretationsgrenze"],"rows":[["keyspace_hits","Erfolgreiche Key-Lookups","Kein direkter Nachweis gesparter Datenbankabfragen oder schnellerer Seiten."],["keyspace_misses","Erfolglose Key-Lookups","Auch ein fehlgeschlagenes EXISTS kann z\u00e4hlen; ein Miss ist nicht automatisch ein Fehler."],["expired_keys","Abgelaufene Schl\u00fcssel","Ein Anstieg allein beweist keine falsch gew\u00e4hlte Lebensdauer."],["evicted_keys","Aufgrund der Speichergrenze verdr\u00e4ngte Schl\u00fcssel","Im Zusammenhang mit Speichergrenze und Eviction-Konfiguration pr\u00fcfen; daraus folgt nicht automatisch eine konkrete Ursache f\u00fcr langsame Requests."]],"source_ids":["S4","S7"]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Anstieg von ","ref":""},{"kind":"code","text":"expired_keys","ref":""},{"kind":"text","text":" kann Anlass sein, Lebensdauern und Zugriffsmuster n\u00e4her anzusehen. Er zeigt aber nicht, ob ein Eintrag kurz nach seinem Ablauf erneut ben\u00f6tigt wurde. Ebenso ist ","ref":""},{"kind":"code","text":"evicted_keys","ref":""},{"kind":"text","text":" im Kontext der konfigurierten Speichergrenze und Verdr\u00e4ngungsstrategie zu betrachten, statt daraus sofort eine Speichererh\u00f6hung abzuleiten. ","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein brauchbares ","ref":""},{"kind":"strong","text":"Messprotokoll","ref":""},{"kind":"text","text":" nennt Anfang und Ende des Zeitfensters, Instanz beziehungsweise Knoten, die beiden Z\u00e4hlerdifferenzen, ihre Summe und die berechnete Quote. Erg\u00e4nze, ob die Instanz gemeinsam genutzt wird und ob w\u00e4hrend des Fensters ein Neustart oder eine R\u00fccksetzung bekannt ist. So bleiben Messungen sp\u00e4ter nachvollziehbar.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Erfasse parallel den betrachteten Request-Typ und eine daf\u00fcr geeignete Latenzkennzahl sowie Datenbanklast und Fehlerrate. Trenne beispielsweise \u00f6ffentliche Seitenaufrufe von eingeloggten Anfragen, wenn daf\u00fcr passende Daten vorliegen. Die Redis-Quote allein verr\u00e4t nicht, welcher dieser Request-Typen von einem Treffer profitiert hat.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr einen sp\u00e4teren Vergleich sollten Zeitraum, Knoten und Request-Mischung m\u00f6glichst \u00e4hnlich sein. Notiere au\u00dferdem relevante \u00c4nderungen und erkennbare Warm-up-Phasen. Wo Daten fehlen oder eine gemeinsame Instanz keine Zuordnung erlaubt, geh\u00f6rt diese Einschr\u00e4nkung ins Protokoll statt in eine scheinbar pr\u00e4zise Schlussfolgerung.","ref":""}]}]},{"id":"szenarien-einordnen","heading":"Kaltstart, Shop und statische Website","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Nach einem Neustart oder Deployment k\u00f6nnen ben\u00f6tigte Eintr\u00e4ge zun\u00e4chst fehlen. Solche Misses sind beim Bef\u00fcllen des Cache zu erwarten; bei wiederkehrenden Zugriffen kann die Trefferquote anschlie\u00dfend steigen. Werte aus der ","ref":""},{"kind":"strong","text":"Kalt- und Warmphase","ref":""},{"kind":"text","text":" solltest du getrennt betrachten, damit ein langer Durchschnitt weder die Anlaufkosten noch das sp\u00e4tere Verhalten verdeckt.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem Shop oder einem eingeloggten Bereich sind dynamische Anfragen besonders interessant: Ein Page Cache beantwortet nicht unbedingt jeden Warenkorb- oder Kontoaufruf. Vergleiche deshalb m\u00f6glichst \u00e4hnliche Request-Typen und achte neben der Quote auf ihre Antwortzeiten und die Datenbanklast. Eine hohe Redis Hit Rate zeigt f\u00fcr sich genommen nicht, ob der Warenkorb schnell und inhaltlich korrekt angezeigt wird.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einer \u00fcberwiegend statischen Website kann dagegen ein gro\u00dfer Teil der Seitenaufrufe bereits aus dem Page Cache kommen. Ein persistenter Object Cache wirkt dort vor allem auf die Anfragen, die WordPress tats\u00e4chlich verarbeitet. Beurteile deshalb getrennt, ob diese verbleibenden Anfragen profitieren und ob sich der Effekt auf die gesamte Website auswirkt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Nutzt du Redis gemeinsam mit anderen Websites oder Anwendungen, umfassen die Instanzz\u00e4hler deren Zugriffe ebenfalls. Ohne geeignete getrennte Telemetrie l\u00e4sst sich die globale Quote keiner einzelnen Website zuverl\u00e4ssig zuordnen. Dokumentiere auch, welche Knoten erfasst sind: Eine Ver\u00e4nderung der Quote kann sonst ebenso an einer anderen Nutzung oder an einem ver\u00e4nderten Messbereich liegen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]},{"id":"fehlersuche-betrieb","heading":"Auff\u00e4llige Werte und Fehler untersuchen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine niedrige Quote ist zun\u00e4chst eine Beobachtung, keine Diagnose. Viele Erstzugriffe, kurze Lebensdauern oder eine Zugriffsverteilung mit selten wiederverwendeten Schl\u00fcsseln kommen als Erkl\u00e4rungen infrage. Pr\u00fcfe, ob sich die Request-Mischung oder das Messfenster ver\u00e4ndert hat, bevor du Speicher oder Cache-Einstellungen anpasst.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Z\u00e4hler ","ref":""},{"kind":"code","text":"expired_keys","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"evicted_keys","ref":""},{"kind":"text","text":" liefern weitere Hinweise: Der erste z\u00e4hlt abgelaufene Schl\u00fcssel, der zweite aufgrund der Speicherbegrenzung verdr\u00e4ngte Schl\u00fcssel. Ihre Differenzen geh\u00f6ren zur Redis-Instanz und m\u00fcssen zur Konfiguration und Nutzung passen. Viele abgelaufene Schl\u00fcssel beweisen weder eine falsch gew\u00e4hlte TTL noch, dass eine l\u00e4ngere Lebensdauer sinnvoll ist; sie kann die Aktualit\u00e4t gespeicherter Daten verschlechtern.","ref":""},{"kind":"citation","text":"","ref":"S4"},{"kind":"citation","text":"","ref":"S7"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr eigene Erweiterungen ist bei ","ref":""},{"kind":"code","text":"wp_cache_get","ref":""},{"kind":"text","text":" der Parameter ","ref":""},{"kind":"code","text":"$found","ref":""},{"kind":"text","text":" wichtig: Er unterscheidet einen gefundenen, gespeicherten Wert ","ref":""},{"kind":"code","text":"false","ref":""},{"kind":"text","text":" von einem nicht gefundenen Eintrag. Vor gruppenbezogenen Aktionen solltest du mit ","ref":""},{"kind":"code","text":"wp_cache_supports","ref":""},{"kind":"text","text":" pr\u00fcfen, ob das konkrete Backend die gew\u00fcnschte Funktion unterst\u00fctzt. Ein ersetzendes Drop-in kann sich von der Core-Implementierung unterscheiden.","ref":""},{"kind":"citation","text":"","ref":"S5"},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"strong","text":"Warnung:","ref":""},{"kind":"text","text":" Ein unbedachter Cache-Flush kann mehr Eintr\u00e4ge oder Anwendungen betreffen als beabsichtigt und die n\u00e4chste Messung durch einen Kaltstart verzerren. Kl\u00e4re den Wirkungsbereich und eine Freigabe, bevor du l\u00f6schende Aktionen ausf\u00fchrst. Erg\u00e4nzende Ansatzpunkte zur ","ref":""},{"kind":"internal_link","text":"Fehlersuche bei einem langsamen WordPress Object Cache","ref":"I3"},{"kind":"text","text":" helfen, auch m\u00f6glichen Cache-Overhead in die Untersuchung einzubeziehen.","ref":""}]}]},{"id":"zielwerte-entscheidung","heading":"Sinnvolle Zielwerte selbst bestimmen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine universelle Mindestquote von 90 Prozent ist keine belastbare technische Anforderung. Sinnvoller ist ein ","ref":""},{"kind":"strong","text":"standortspezifischer Zielbereich","ref":""},{"kind":"text","text":", der zur erwarteten Zugriffsverteilung und zum Nutzen f\u00fcr die Anwendung passt. Redis empfiehlt, die beobachtete Quote im Kontext des jeweiligen Zugriffsmusters zu beurteilen; ein Prozentwert allein erkl\u00e4rt noch keine WordPress Performance.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Erfasse zun\u00e4chst eine repr\u00e4sentative Ausgangsmessung mit Zeitraum, Messbereich, Zugriffszahl und Quote. Halte dazu Antwortzeiten wichtiger Request-Typen, Datenbanklast und Fehlerrate fest. Kennzeichne Kaltstarts gesondert und ber\u00fccksichtige typische Unterschiede zwischen Zeiten mit wenig und viel Betrieb, statt ein zuf\u00e4llig g\u00fcnstiges Fenster als Normalzustand zu behandeln.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Plane anschlie\u00dfend eine konkrete \u00c4nderung und pr\u00fcfe sie nach Freigabe m\u00f6glichst zuerst in einer geeigneten Testumgebung. Stelle danach vergleichbare Zeitr\u00e4ume und Request-Mischungen gegen\u00fcber: \u00c4ndern sich Quote und Anzahl der Lookups, aber auch die Latenz oder die Datenbanklast? So l\u00e4sst sich der Effekt besser von einer blo\u00dfen Verschiebung der Zugriffe unterscheiden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch eine hohe Quote kann wenige, besonders teure Misses verdecken. Umgekehrt muss eine moderate Quote kein Problem sein, wenn relevante Anfragen schnell und korrekt beantwortet werden. Zus\u00e4tzlicher Betriebsaufwand f\u00fcr Redis oder ein anderes persistentes Backend ist durch eine bessere Quote allein nicht automatisch gerechtfertigt; ber\u00fccksichtige Hosting-Unterst\u00fctzung, Kosten und m\u00f6gliche Ausfallszenarien.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S4"}]}]}]},"_wh_make_word_report":{"words":2197,"min":2000,"max":3000,"target":2500,"ok":true,"missing":0,"excess":0,"lead_words":74,"section_words":{"object-cache-grundlagen":242,"cache-ebenen":232,"hit-rate-grundlagen":231,"messung-vorbereiten":249,"intervall-berechnen":289,"messprotokoll-kennzahlen":276,"szenarien-einordnen":214,"fehlersuche-betrieb":196,"zielwerte-entscheidung":194}},"_wh_make_review":{"verdict":"pass","issues":[],"checked_source_ids":["S1","S2","S3","S4","S5","S6","S7","S8"],"summary":"Keine freigabeverhindernden fachlichen Befunde. Requestgebundener Core-Cache, persistente Drop-ins und nicht persistente Gruppen sind korrekt unterschieden. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/wp_object_cache\/)) Die Redis-Formel, die Einordnung fehlgeschlagener EXISTS-Aufrufe und die anwendungsbezogene Bewertung statt einer universellen Mindestquote sind belegt. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/)) Die Kennzahlentabelle stimmt mit den INFO-Definitionen \u00fcberein. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/)) Die Erkl\u00e4rung des found-Parameters ist korrekt. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/reference\/classes\/WP_Object_Cache\/get\/)) wp cache type ist zutreffend als Versuch zur Bestimmung der Implementierung beschrieben. ([developer.wordpress.org](https:\/\/developer.wordpress.org\/cli\/commands\/cache\/)) Das Rechenbeispiel ergibt korrekt 90 Prozent bei 1.000 Lookups und wird ausdr\u00fccklich nicht als Messung ausgegeben. Tabellen, Code, Versionshinweis und Begleittexte enthalten keine behaupteten eigenen Tests. Die Bildkonzepte sind als KI-generierte Illustrationen beziehungsweise Symbolbild gekennzeichnet und zeigen keine irref\u00fchrende technische Topologie; ein Chart ist nicht vorhanden. Die Quellenzuordnung wurde anhand der tats\u00e4chlichen URLs im source_registry gepr\u00fcft, nicht anhand der abweichenden Nummerierung im Recherchebriefing."},"_wh_make_review_doc_hash":"09a5a2ed1132ee77ffe623358404b162a3225e79153b6ac785b327b3cd90f02f","_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"inline_featured_image":null,"_yoast_wpseo_linkdex":null,"_eael_widget_elements":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_trp_translated_slug_en_us":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_wh_make_writer_raw":null,"_wh_make_design_backup_204":null,"_wp_desired_post_slug":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"92","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"WordPress Object Cache Hit Rate","rank_math_og_content_image":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"22172","_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":"Miss die WordPress Object Cache und Redis Hit Rate richtig und finde einen Zielbereich, der zu deiner Website und ihren Anfragen passt.","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/comments?post=22170"}],"version-history":[{"count":2,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22170\/revisions"}],"predecessor-version":[{"id":22175,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22170\/revisions\/22175"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media\/22172"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media?parent=22170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/categories?post=22170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/tags?post=22170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}