PluginProbe
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN / 1.3.7
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN v1.3.7
1.3.7 1.3.6 1.3.5 1.3.4 1.3.3 1.3.2 1.3.1 1.3.0 1.2.4 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 All 33 releases
← All changes | includes/modules/Health/HealthModule.php +13 -3 1.3.5 → 1.3.7 View file →
@@ -147,9 +147,16 @@
147 147 // "toggle Enable Cache off and on" cannot reinstall anything —
148 148 // the same condition suppresses the write and auto_heal() strips
149 149 // the block again on the next admin load. Explain the real cause.
150 150 $block_reason = \XSpeed\Cache::static_rewrite_block_reason();
151 - if ( 'no_mod_headers' === $block_reason ) {
151 + if ( 'litespeed_dropin' === $block_reason ) {
152 + // The intended LiteSpeed default (#509) — 'good', not a nag:
153 + // hits are visible and counted, and the faster path is a
154 + // deliberate opt-in, not a missing config.
155 + $result['label'] = __( 'xSpeed is serving cache hits through PHP (LiteSpeed)', 'xspeed' );
156 + $result['status'] = 'good';
157 + $result['description'] = '<p>' . esc_html__( 'Caching is working — hits are served by the xSpeed drop-in and tagged X-XSpeed-Cache: HIT (php), so every hit is visible and counted. LiteSpeed\'s .htaccess engine cannot tag or log statically served files, so this is the default. To serve hits straight from the web server with no PHP (at the cost of that tagging and counting), turn on LiteSpeed Static Fast Path in xSpeed\'s Cache settings.', 'xspeed' ) . '</p>';
158 + } elseif ( 'no_mod_headers' === $block_reason ) {
152 159 $result['label'] = __( 'xSpeed is serving cache hits through PHP', 'xspeed' );
153 160 $result['status'] = 'recommended';
154 161 $result['description'] = '<p>' . esc_html__( 'Caching is working — hits are served by the xSpeed drop-in and tagged X-XSpeed-Cache: HIT (php). The faster .htaccess fast path is off because Apache\'s mod_headers module is not loaded, without which a static hit could not be tagged or counted. Enable mod_headers (a2enmod headers on Debian/Ubuntu, then restart Apache) to shave roughly 20-30ms off each cache hit.', 'xspeed' ) . '</p>';
155 162 } elseif ( 'mobile_separate' === $block_reason ) {
@@ -155,9 +162,11 @@
155 162 } elseif ( 'mobile_separate' === $block_reason ) {
156 163 $result['label'] = __( 'xSpeed static rewrite is off (Separate Mobile Cache)', 'xspeed' );
157 164 $result['status'] = 'recommended';
158 165 $result['description'] = '<p>' . esc_html__( 'Separate Mobile Cache is on, so cache hits are served by the PHP drop-in to keep per-device HTML correct. Turn Separate Mobile Cache off if your site serves the same HTML to every device to regain the faster static path.', 'xspeed' ) . '</p>';
159 - } elseif ( \XSpeed\Server::APACHE === $server_type && ! \XSpeed\Cache::rewrite_installed() ) {
166 + } elseif ( '' === $block_reason && ! \XSpeed\Cache::rewrite_installed() ) {
167 + // Apache, or LiteSpeed with the Static Fast Path opt-in on
168 + // (#509) — either way the block SHOULD be there and is not.
160 169 $result['label'] = __( 'xSpeed .htaccess rewrite block is missing', 'xspeed' );
161 170 $result['status'] = 'recommended';
162 171 $result['description'] = '<p>' . esc_html__( 'Without the static-rewrite block, cache hits go through the PHP drop-in (~85ms TTFB) instead of the web server (~5-15ms). Toggle Enable Cache off and on in xSpeed to reinstall the block.', 'xspeed' ) . '</p>';
163 172 }
@@ -240,9 +249,9 @@
240 249 public function ui_metadata(): array {
241 250 return array(
242 251 'label' => __( 'Health', 'xspeed' ),
243 252 'icon' => 'HeartPulse',
244 - 'description' => __( 'Diagnostics, hit ratio, and recent cache activity.', 'xspeed' ),
253 + 'description' => __( 'Checks for problems and shows how often visitors get cached pages.', 'xspeed' ),
245 254 // Health is the single host page for all Insights (FBS-83633):
246 255 // a Recommendations action card + Cache / Visitors / PageSpeed
247 256 // tabs. HealthPanel renders the Free cache diagnostics (the old
248 257 // HealthCard) as the Cache tab and hosts the Pro insight panels
@@ -247,8 +256,9 @@
247 256 // tabs. HealthPanel renders the Free cache diagnostics (the old
248 257 // HealthCard) as the Cache tab and hosts the Pro insight panels
249 258 // as the other tabs via ProSlot.
250 259 'custom_panel' => 'HealthPanel',
260 + 'group' => 'insights',
251 261 );
252 262 }
253 263
254 264 // No settings — explicit empty so Module::rest_routes() doesn't