{"id":352324,"date":"2026-08-22T13:26:49","date_gmt":"2026-08-22T13:26:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lumencache\/"},"modified":"2026-08-23T00:57:28","modified_gmt":"2026-08-23T00:57:28","slug":"lumen-cache","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/lumen-cache\/","author":9876162,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.24","stable_tag":"1.6.24","tested":"7.1","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"LumenCache","header_author":"Nasrul Eam","header_description":"RAM-first full-page caching for WordPress with an early PHP drop-in for Nginx, Apache, and LiteSpeed. Integrates with WooCommerce, LearnDash, LifterLMS, MemberPress, and BuddyBoss.","assets_banners_color":"dfd9d9","last_updated":"2026-08-23 00:57:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.lightandcomposition.com\/dev\/lumencache\/","header_author_uri":"https:\/\/www.lightandcomposition.com\/dev-lab\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":85,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.6.23":{"tag":"1.6.23","author":"CelsiusAnderson","date":"2026-08-22 14:05:50"},"1.6.24":{"tag":"1.6.24","author":"CelsiusAnderson","date":"2026-08-23 00:57:28"}},"upgrade_notice":{"1.6.24":"<p>WordPress 7.1 compatibility release. Recommended update for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3660680,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3660680,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3660680,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3660680,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.6.23","1.6.24"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[146,68923,5896,247,286],"plugin_category":[45,52,54],"plugin_contributors":[276962,276961],"plugin_business_model":[],"class_list":["post-352324","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-cache","plugin_tags-full-page-cache","plugin_tags-page-speed","plugin_tags-performance","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-celsiusanderson","plugin_contributors-nasruleam","plugin_committers-celsiusanderson"],"banners":{"banner":"https:\/\/ps.w.org\/lumen-cache\/assets\/banner-772x250.png?rev=3660680","banner_2x":"https:\/\/ps.w.org\/lumen-cache\/assets\/banner-1544x500.png?rev=3660680","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lumen-cache\/assets\/icon-128x128.png?rev=3660680","icon_2x":"https:\/\/ps.w.org\/lumen-cache\/assets\/icon-256x256.png?rev=3660680","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>LumenCache implements a RAM-first full-page cache with a WordPress\n    advanced-cache.php drop-in. On a cache HIT, the drop-in serves complete HTML\nbefore the normal WordPress bootstrap and database queries. This early-response\npath reduces application-layer work and keeps repeat page requests fast across\nNginx, Apache, and LiteSpeed.<\/p>\n\n<p>The cache is designed to fail open when its storage layer is unavailable, so a\ncache connection problem does not take the WordPress site offline.<\/p>\n\n<h3>Research Foundation<\/h3>\n\n<p>Academic Reference:\n\"Dynamic Resource Mapping in Zero-Reload Server Architectures: Eliminating\nApplication-Layer Latency and Extension Dependency in High-Concurrency CMS\npersonalised requests continue through the full WordPress stack.<\/p>\n\n<p>This architecture is intended to reduce repeated bootstrap work, database\nqueries, and extension overhead while preserving WordPress compatibility. It\nalso provides a practical bridge between academic performance research and\neveryday publishing workloads, including content-heavy sites, WooCommerce\ncatalogues, and membership-driven pages.<\/p>\n\n<p>Research author: <strong>Dean Nasrul Eam \u2014 Light &amp; Composition University<\/strong>.<\/p>\n\n<h4>Eight-Subsystem Architecture<\/h4>\n\n<ol>\n<li><strong>RAM-First Full-Page Cache Engine<\/strong> \u2014 PHP stores complete HTML at\n   shutdown and resolves repeat requests from the in-memory cache layer.<\/li>\n<li><strong>Nginx \/ Apache Proxy Bridge<\/strong> \u2014 Static or dynamic server config bypasses\nPHP entirely for cache hits.<\/li>\n<li><strong>Selective Bypass Cookie Router<\/strong> \u2014 <code>sys_active_state<\/code> cookie routes\nlogged-in users and cart-active visitors to live PHP.<\/li>\n<li><strong>Application Driver Profile Engine<\/strong> \u2014 Auto-detects WooCommerce,\nLearnDash, LifterLMS, MemberPress, BuddyBoss and registers tailored bypass\nrules and invalidation hooks.<\/li>\n<li><strong>Surgical Cache Invalidation<\/strong> \u2014 Post save \/ nav menu \/ widget \/ theme\nswitch events trigger precise per-URL or full purges.<\/li>\n<li><strong>REST API State Endpoint<\/strong> \u2014 <code>\/wp-json\/lumencache\/v1\/user-state<\/code> serves\npersonalised fragments for skeleton-hydration clients.<\/li>\n<li><strong>Skeleton Hydration DOM Worker<\/strong> \u2014 <code>skeleton-hydration.js<\/code> replaces cached\nplaceholders with live content on load.<\/li>\n<li><strong>WP-CLI Management Interface<\/strong> \u2014 <code>flush<\/code>, <code>flush-url<\/code>, <code>status<\/code> commands.<\/li>\n<\/ol>\n\n<h4>Configuration (optional)<\/h4>\n\n<p>All settings are configurable from <strong>LumenCache \u2192 Settings<\/strong> in the WordPress\nadmin. Optionally override any setting via wp-config.php \u2014 constants always win:<\/p>\n\n<pre><code>define( 'LUMENCACHE_REDIS_HOST',          '127.0.0.1' );\ndefine( 'LUMENCACHE_REDIS_PORT',          6379 );\ndefine( 'LUMENCACHE_REDIS_SOCKET',        '' );\ndefine( 'LUMENCACHE_REDIS_PASSWORD',      '' );\ndefine( 'LUMENCACHE_REDIS_DATABASE',      0 );\ndefine( 'LUMENCACHE_REDIS_TIMEOUT',       1.0 );\ndefine( 'LUMENCACHE_REDIS_PREFIX',        'cache:' );\ndefine( 'LUMENCACHE_CACHE_TTL',           86400 );\ndefine( 'LUMENCACHE_CACHE_SALT',          '' );\ndefine( 'LUMENCACHE_CACHE_QUERY_STRINGS', false );\ndefine( 'LUMENCACHE_PROXY_PASSWORD',      '' );\n<\/code><\/pre>\n\n<h4>WP-CLI<\/h4>\n\n<pre><code>wp lumencache flush\nwp lumencache flush-url https:\/\/example.com\/page\/\nwp lumencache status&lt;h3&gt;Privacy&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>LumenCache stores rendered page HTML and cache metadata in the in-memory cache\nservice configured by the site administrator. It does not send cache contents,\nvisitor data, or analytics data to a third-party LumenCache service. The\noptional user-state endpoint returns only the requested dynamic values to the\nrequesting browser; sites should review those values and their own privacy\npolicy before enabling personalized hydration.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20are%200%20pages%20cached%3F\"><h3>Why are 0 pages cached?<\/h3><\/dt>\n<dd><p>Two common causes:\n1. <strong>Nginx config not applied<\/strong> \u2014 visit Server Setup and paste the config blocks.\n2. <strong>WooCommerce session cookie<\/strong> \u2014 fixed in v1.1.0. Previous versions bypassed\n   the cache for <em>all<\/em> visitors on WooCommerce sites due to the always-present\n       wp_woocommerce_session_* cookie.<\/p><\/dd>\n<dt id=\"why%20can%20key%20salting%20affect%20server-level%20caching%3F\"><h3>Why can key salting affect server-level caching?<\/h3><\/dt>\n<dd><p>When <code>LUMENCACHE_CACHE_SALT<\/code> is set, PHP stores keys as SHA-256 hashes. A\nserver-level configuration must use the same key strategy or it will produce\ncache misses. Disable the salt for a plain-key configuration, or use the\ncompatible hashed-key server template.<\/p><\/dd>\n<dt id=\"does%20lumencache%20work%20with%20litespeed%3F\"><h3>Does LumenCache work with LiteSpeed?<\/h3><\/dt>\n<dd><p>Yes. LiteSpeed supports Apache-compatible <code>.htaccess<\/code> rewrites. LumenCache uses\nthe Apache proxy mode on LiteSpeed. For better performance, ask your host\nwhich in-memory cache acceleration options are available.<\/p><\/dd>\n<dt id=\"can%20i%20still%20use%20wp-config.php%20constants%3F\"><h3>Can I still use wp-config.php constants?<\/h3><\/dt>\n<dd><p>Yes \u2014 constants always take precedence over admin settings. If you define a\nconstant, the corresponding field in the Settings tab is shown locked (read-only).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.24 (August 23, 2026)<\/h4>\n\n<ul>\n<li>COMPATIBILITY: Tested and verified full compatibility with WordPress 7.1.<\/li>\n<li>PERFORMANCE: Verified pre-bootstrap drop-in execution, cache purging hooks, and REST API user-state endpoints on WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.6.23 (August 15, 2026)<\/h4>\n\n<ul>\n<li>SECURITY: Added explicit ABSPATH direct access guard to <code>server\/lumen-cache-proxy.php<\/code>.<\/li>\n<li>IMPROVEMENT: Updated <code>Htaccess::deploy_proxy()<\/code> to automatically configure localized ABSPATH definitions upon file deployment.<\/li>\n<\/ul>\n\n<h4>1.6.22 (August 15, 2026)<\/h4>\n\n<ul>\n<li>COMPLIANCE: Full compliance with WordPress.org Guideline 5; streamlined UI with clean external Pro link.<\/li>\n<li>DROP-IN: <code>advanced-cache.php<\/code> is now completely self-contained with compiled configuration snapshot data.<\/li>\n<li>SANITIZATION: Strict input and header sanitization against CRLF injection across all pre-bootstrap request paths.<\/li>\n<\/ul>\n\n<h4>1.6.21 (August 14, 2026)<\/h4>\n\n<ul>\n<li>HOUSEKEEPING: Updated Plugin URI to point to the official Dev Lab page.<\/li>\n<\/ul>\n\n<h4>1.6.20 (August 11, 2026)<\/h4>\n\n<ul>\n<li>FIX: Adjusted Quick Setup step flex rules in <code>assets\/css\/admin.css<\/code> to prevent connector lines from overlapping labels.<\/li>\n<\/ul>\n\n<h4>1.6.19 (August 11, 2026)<\/h4>\n\n<ul>\n<li>FIX: Replaced WordPress functions in <code>lumen-cache-proxy.php<\/code> with native PHP casts since the proxy runs pre-bootstrap.<\/li>\n<li>FIX: Corrected root path calculation (<code>LUMENCACHE_PROXY_ABSPATH<\/code>) for WordPress <code>index.php<\/code> and <code>wp-config.php<\/code> inclusion.<\/li>\n<\/ul>\n\n<h4>1.6.18 (August 11, 2026)<\/h4>\n\n<ul>\n<li>FIX: Added return value check on <code>$redis-&gt;auth()<\/code> and <code>$redis-&gt;select()<\/code> in <code>connect_phpredis()<\/code>.<\/li>\n<\/ul>\n\n<h4>1.6.17 (August 11, 2026)<\/h4>\n\n<ul>\n<li>PERF: Guarded debug string concatenation behind an explicit <code>LUMENCACHE_DEBUG<\/code> check for zero production overhead.<\/li>\n<\/ul>\n\n<h4>1.6.16 (August 11, 2026)<\/h4>\n\n<ul>\n<li>FIX: Replaced non-existent WordPress helper calls in <code>advanced-cache.php<\/code> with native PHP casts and isset checks.<\/li>\n<li>FIX: Corrected <code>enable_wp_cache()<\/code> string replacement logic for reliable <code>WP_CACHE<\/code> insertion into <code>wp-config.php<\/code>.<\/li>\n<\/ul>\n\n<h4>1.6.15 (August 11, 2026)<\/h4>\n\n<ul>\n<li>FIX: <code>Lifecycle::uninstall()<\/code> now flushes all Redis keys before removing plugin files.<\/li>\n<li>FIX: Corrected connection source label in Settings for manually-entered host\/port settings.<\/li>\n<\/ul>\n\n<h4>1.6.14 (August 11, 2026)<\/h4>\n\n<ul>\n<li>SECURITY: Added direct file access protection via <code>ABSPATH<\/code> check to all server drop-ins.<\/li>\n<li>SANITIZATION: Sanitized all <code>$_SERVER<\/code> inputs across pre-bootstrap request paths.<\/li>\n<\/ul>\n\n<h4>1.6.13 (August 11, 2026)<\/h4>\n\n<ul>\n<li>FIX: Prevented RSS\/Atom feeds from caching to avoid incorrect <code>Content-Type: text\/html<\/code> response headers.<\/li>\n<li>FIX: Hardened URL sanitization in manual cache purge handler using <code>esc_url_raw()<\/code>.<\/li>\n<\/ul>\n\n<h4>1.6.12 (August 10, 2026)<\/h4>\n\n<ul>\n<li>NEW: Built-in WooCommerce cart-fragments guard against crawler-triggered fragment storms.<\/li>\n<\/ul>\n\n<h4>1.6.11 (August 9, 2026)<\/h4>\n\n<ul>\n<li>COMPLIANCE: Standardized update delivery on the official WordPress.org channel.<\/li>\n<li>DOCS: Added direct SSH installation instructions for Plesk in the Hosting Guide.<\/li>\n<\/ul>\n\n<h4>1.6.10 (August 9, 2026)<\/h4>\n\n<ul>\n<li>NEW: Added RAM Cache Engine connectivity check to Quick Setup and introduced the Hosting Guide tab.<\/li>\n<\/ul>\n\n<h4>1.6.9 (August 9, 2026)<\/h4>\n\n<ul>\n<li>IMPROVED: Quick Setup tracker review drawer for active, fully-configured sites.<\/li>\n<\/ul>\n\n<h4>1.6.8 (August 9, 2026)<\/h4>\n\n<ul>\n<li>NEW: Added interactive 4-step Quick Setup progress tracker on the Overview tab.<\/li>\n<\/ul>\n\n<h4>1.6.7 (August 9, 2026)<\/h4>\n\n<ul>\n<li>FIX: Aligned admin card headers and status badges across dashboard screens.<\/li>\n<\/ul>\n\n<h4>1.6.6 (August 8, 2026)<\/h4>\n\n<ul>\n<li>SECURITY: Synchronized MemberPress session cookie matching across Nginx, Apache, and PHP drivers.<\/li>\n<\/ul>\n\n<h4>1.6.5 (August 8, 2026)<\/h4>\n\n<ul>\n<li>FIX: Updated navigation references and doc comments for modular settings architecture.<\/li>\n<\/ul>\n\n<h4>1.6.4 (August 8, 2026)<\/h4>\n\n<ul>\n<li>UX: Refined dashboard sidebar layout with dedicated feature navigation panels.<\/li>\n<\/ul>\n\n<h4>1.6.3 (August 8, 2026)<\/h4>\n\n<ul>\n<li>CRITICAL: Added foreign drop-in protection to prevent overwriting existing third-party cache drop-ins.<\/li>\n<li>FIX: Aligned Redis timeout defaults and safety bypasses for dynamic\/personal routes across all readers.<\/li>\n<li>FIX: Added non-HTML response rejection to prevent caching API\/JSON payloads as HTML.<\/li>\n<\/ul>\n\n<h4>1.6.2<\/h4>\n\n<ul>\n<li>IMPROVED: Refined update channel integration for WordPress.org directory hosting.<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>UX: Instant click-to-show tabs across dashboard navigation.<\/li>\n<li>FIX: Fixed Admin Bar quick link URL routing.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>ARCHITECTURE: Split into clean Standard core with modular action\/filter extensibility.<\/li>\n<li>UX: Single-page admin navigation shell with collapsible sidebar.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>FIX: Corrected LiteSpeed \/ OpenLiteSpeed server detection order.<\/li>\n<li>FIX: Added safe commented placeholders for salted Nginx configurations.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>NEW: Added Cloudflare edge cache purge integration support.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>NEW: Added cache telemetry diagnostics, bypass-reason counters, and connection test tooling.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>NEW: Automatic detection and bypass integration for XML sitemaps.<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>NEW: Automatic application driver integration for educational courses and custom post types.<\/li>\n<\/ul>\n\n<h4>1.2.8<\/h4>\n\n<ul>\n<li>COMPATIBILITY: Verified compatibility with WordPress 7.0 and PHP 8.5.<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>FIX: Intelligent handling of all three <code>WP_CACHE<\/code> states in <code>wp-config.php<\/code> and automated cleanup on deactivation.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>UX: Added context-aware validation for Nginx key salting configurations.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>UX: Context-aware badges in Security Hardening Matrix and direct key salt generator.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>FIX: Added tracking-parameter stripping to Apache proxy to maintain parity with PHP cache keys.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>CRITICAL: Fixed phpredis <code>SCAN<\/code> cursor handling in <code>key_count()<\/code> and <code>delete_pattern()<\/code>.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>FIX: Automated stripping of 14 marketing tracking query parameters (Google Shopping, Meta Ads, etc.).<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>FIX: Added connection return validation in <code>connect_phpredis()<\/code> and refined Unix socket handling.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>FIX: Output buffering rebuild for PHP-FPM and Nginx FastCGI environments.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>NEW: Standalone <code>advanced-cache.php<\/code> drop-in deployment with zero server configuration requirements.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>NEW: Admin settings interface, Admin Bar menu, and WP Dashboard widget.<\/li>\n<li>FIX: Resolved WooCommerce session cookie over-bypass for dramatic cache hit rate improvements.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<\/ul>","raw_excerpt":"RAM-first full-page caching that serves pages before WordPress loads, with automatic WooCommerce and LMS integration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/352324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=352324"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/celsiusanderson"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=352324"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=352324"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=352324"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=352324"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=352324"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=352324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}