📢 欢迎访问本站!本站持续更新优质内容。哈啊哈

WordPress缓存设置问题

📖 本文共 1,540 字,阅读需要 6 分钟

一、三层缓存,现状

1) 页面缓存:WP Super Cache 3.1.3 —— 启用中

配置文件 wp-content/wp-cache-config.php:

设置 当前值 含义
$cache_enabled true 插件总开关开
$super_cache_enabled true 静态缓存开关开
WP_CACHE / drop-in true / advanced-cache.php 在位 缓存机制确实被加载
$cache_max_time 3600 缓存 1 小时即过期(最关键的一项)
$wp_cache_mod_rewrite 0 Simple(PHP 交付),不走 nginx rewrite
$cache_compression 1 缓存文件 gzip 存储
$cache_path wp-content/cache/ 实际落在 cache/supercache/<域名>/<URL 路径>/
$wp_cache_not_logged_in 2 登录用户完全不走缓存(所以你后台浏览感受不到)
$cache_rejected_user_agent array() 不拒绝任何 UA(爬虫访问也照样缓存)
$cache_rejected_uri wp-.*\.php、index\.php 这两类 URI 不缓存
$wp_cache_clear_on_post_edit 0 改文章不会清全站(好事)
$wp_cache_mobile_enabled 0 不做移动端变体
$wp_cache_preload_on 0 预加载关闭
首页扩展检查 / 清空 全关 —
垃圾回收 WP-Cron wp_cache_gc 在跑(共 35 个 cron 事件,GC 排期正常,只删过期文件)

2) 对象缓存:Redis —— 在跑

  • 插件 redis-cache 3.0.0 + drop-in wp-content/object-cache.php(109KB,2025-09-21 更新)
  • 实测 redis-cli ping = PONG,dbsize = 4786 个键 → 确实在工作
  • (wp redis status 读不到 redis-cache 选项,是 3.0 改了配置存储方式,不影响它工作)

3) PHP / Web 层

  • PHP 8.1 + opcache 开启(128MB)
  • nginx 对 css/js/图片下发 30 天 expires(所以改样式必须换版本号)
  • 无 CDN(DNS 直连),nginx 也没开 fastcgi_cache

二、实际表现(今天实测,不是推测)

  • 命中的真实形态:缓存文件是 wp-cache-<hash>.php + meta-wp-cache-<hash>.php(WP-Cache 引擎文件),缓存目录里 0 个静态 index.html —— 虽然 $super_cache_enabled=true,静态 supercache 实际没产出(这点还没查透)
  • 速度:冷渲染 544ms → 缓存命中 21ms(约 25 倍)
  • 覆盖率很低:408 个页面里此刻只有约 40 个有缓存文件 → 因为 1 小时过期,只有”最近 1 小时被访问过”的页面在缓存里
  • 首页没有缓存:目录里没有它的缓存文件,两次请求都是动态渲染(首屏 ~1s)
  • 中文 URL 的坑:缓存目录用大写 %E5%AE%98...,而 get_permalink() 返回小写 %e5%ae%98...,Linux 区分大小写 → 两套目录并存

三、一句话总结

当前 = 1 小时有效期的页面缓存 + Redis 对象缓存 + opcache。

命中时极快(~20ms),但覆盖靠”自然访问”:冷页面、首页、归档页都是动态渲染(0.5–1s),且过期后 1 小时就没了。这也解释了上一轮我说”预热只有 1 小时价值”的由来。

要让”全站预热”真正划算,关键就是三件事:把 $cache_max_time 放大(1 小时 → 1 天/7 天)、预热一次、定时预热维持。这正好是上次方案 A,你确认后我就执行。


本文章永久链接: WordPress缓存设置问题

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部