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/BrowserCache/BrowserCacheModule.php +12 -10 1.2.4 → 1.3.7 View file →
@@ -28,11 +28,12 @@
28 28 public const VERSION = '1.0.0';
29 29
30 30 public function ui_metadata(): array {
31 31 return array(
32 - 'label' => 'Browser Cache',
32 + 'label' => __( 'Browser Cache', 'xspeed' ),
33 33 'icon' => 'Clock',
34 - 'description' => 'Tell browsers (and intermediate CDNs) how long to cache static assets and HTML.',
34 + 'description' => __( 'Tells browsers and CDNs how long to keep your files and pages.', 'xspeed' ),
35 + 'group' => 'cache',
35 36 );
36 37 }
37 38
38 39 public function settings_schema(): array {
@@ -39,10 +40,10 @@
39 40 return array(
40 41 'enabled' => array(
41 42 'type' => 'bool',
42 43 'default' => false,
43 - 'label' => 'Enable browser cache headers',
44 - 'description' => 'On Apache/LiteSpeed this writes Cache-Control + Expires rules into .htaccess. On nginx it just stores the settings — you paste the snippet into your server block manually.',
44 + 'label' => __( 'Enable browser cache headers', 'xspeed' ),
45 + 'description' => __( 'On Apache and LiteSpeed, xSpeed adds the rules to .htaccess for you. On nginx, you copy the snippet into your server config.', 'xspeed' ),
45 46 ),
46 47 'asset_ttl' => array(
47 48 'type' => 'int',
48 49 'default' => Browser_Cache::DEFAULT_ASSET_TTL,
@@ -47,11 +48,11 @@
47 48 'type' => 'int',
48 49 'default' => Browser_Cache::DEFAULT_ASSET_TTL,
49 50 'min' => 0,
50 51 'max' => 31536000,
51 - 'label' => 'Static asset TTL (seconds)',
52 + 'label' => __( 'File lifetime (seconds)', 'xspeed' ),
52 53 'unit' => 'seconds',
53 - 'description' => 'Cache lifetime for CSS, JS, fonts, images. Defaults to 1 year + immutable (the industry-standard "fingerprinted assets never change" pattern).',
54 + 'description' => __( 'How long browsers keep CSS, JS, fonts and images. The default is 1 year, which suits files that change name when they change.', 'xspeed' ),
54 55 'dependsOn' => array( 'field' => 'enabled' ),
55 56 ),
56 57 'html_ttl' => array(
57 58 'type' => 'int',
@@ -57,11 +58,11 @@
57 58 'type' => 'int',
58 59 'default' => Browser_Cache::DEFAULT_HTML_TTL,
59 60 'min' => 0,
60 61 'max' => 31536000,
61 - 'label' => 'HTML TTL (seconds)',
62 + 'label' => __( 'Page lifetime (seconds)', 'xspeed' ),
62 63 'unit' => 'seconds',
63 - 'description' => 'Cache lifetime for the HTML document itself. Keep short (default 1h) so post edits roll out same-day.',
64 + 'description' => __( 'How long browsers keep the page itself. Keep it short (default 1 hour) so visitors see your edits the same day.', 'xspeed' ),
64 65 'dependsOn' => array( 'field' => 'enabled' ),
65 66 ),
66 67 );
67 68 }
@@ -172,10 +173,11 @@
172 173 }
173 174 }
174 175
175 176 /**
176 - * Cache-Control / Expires directives for the unified nginx
177 - * server-block snippet. Null when the module is disabled — no
177 + * Cache-Control directives for the unified nginx server-block
178 + * snippet. nginx sends no Expires — `expires off;` pins the block so
179 + * only the explicit `add_header` speaks (#259). Null when the module is disabled — no
178 180 * directives to install.
179 181 */
180 182 public function nginx_directives(): ?string {
181 183 $opts = $this->get_settings();