搜索全站
性能优化 9 分钟阅读

WP Rocket 配置全解析:缓存、预加载与延迟 JS 每一项开关的推荐值

WP Rocket 有几十个开关,配错一个就能让前台错乱。本文逐项解析缓存、文件优化、媒体、预加载、数据库五大板块每项的真实作用与推荐值,附排除文件的过滤器写法。

U
UFO_PF 2022-03-04 · 阅读 9 分钟
WP 性能优化
阅读提示
本文约 3,548 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:买了 WP Rocket,勾了”全部优化”然后前台崩了

WP Rocket 是最好卖的 WordPress 付费缓存插件,界面做得像开关面板一样友好,于是很多人装完第一件事就是把所有勾选项全开:Minify、Combine、Defer、Delay、LazyLoad、Remove Unused CSS、CDN、Database Cleanup 一起上。结果前台 CSS 没加载、轮播图不动、WooCommerce 加购按钮点了没反应。

问题不在插件,在于这些开关之间是有依赖和风险等级的。有的开关(页面缓存)几乎零风险且收益最大;有的(合并 CSS/JS)在 HTTP/2 时代已经不再推荐;有的(延迟执行 JS)收益高但必须配排除清单。本文按”收益/风险”给每一项定性,让你知道哪些必须开、哪些要看情况、哪些干脆别碰。

原理分析:开关背后的三种机制

WP Rocket 做的三件事可以按机制归类:

第一类是缓存:把动态生成的 HTML 存成静态文件,后续请求直接由 Web 服务器返回,连 PHP 都不启动。这是收益最大的一项,风险最低。核心参数只有两个:缓存有效期(Cache Lifespan)与是否区分移动端/登录用户。

第二类是文件优化:压缩、合并、延迟加载 CSS/JS。收益中等,风险偏高。合并(Combine)在 HTTP/2 多路复用下已无必要,反而会因为任一小文件变更导致整个合并文件失效重下;延迟执行 JS(Delay JS)收益明显(把第三方脚本推迟到用户交互后再加载),但会打破所有依赖同步加载的内联脚本。

第三类是清理与卸载:数据库清理、心跳控制、CDN 改写。收益视站点而定,风险可控但不可逆(数据库清理)。

下表给出关键项的定性:

板块 选项 推荐值 风险
Cache Mobile Cache 开(有独立移动模板时) 低
Cache User Cache 关(会员站才开) 中
Cache Cache Lifespan 10 小时 低
File Optimization Minify CSS/JS 开 低
File Optimization Combine CSS files 关(HTTP/2 下无收益) 中
File Optimization Optimize CSS delivery 开(Remove Unused CSS 需测试) 高
File Optimization Delay JS execution 开(必须配排除) 高
Media LazyLoad images/iframes 开 低
Preload Preload links on hover 开 低
Preload Sitemap preloading 开(小站) 中

保姆级实操

第一步:基础缓存设置

WP Rocket → Cache:

  • Enable caching for logged-in users:关(会员站除外);
  • Cache Lifespan:填 10 小时;
  • 若站点有 AMP 或独立移动主题,打开 Mobile Cache。

第二步:文件优化的正确组合

WP Rocket → File Optimization → CSS Files:

  • Minify CSS:开;
  • Combine CSS files:关(HTTP/2 下反而拖慢);
  • Optimize CSS delivery:开,”Remove Unused CSS”先关,跑一周稳定后再开并前台逐页核对。

JS Files:

  • Minify JS / Load JS deferred:开;
  • Delay JS execution:开,然后在下面的排除框里填必要脚本。

第三步:用过滤器补排除项(比界面填更可靠)

界面里的排除框适合临时填,长期维护建议写进子主题或功能插件:

<?php
// 延迟执行 JS 时排除:统计、广告、表单校验脚本
add_filter( 'rocket_delay_js_exclusions', function ( $excluded ) {
    $excluded[] = 'gtag';
    $excluded[] = 'googletagmanager';
    $excluded[] = '/wp-includes/js/jquery/jquery.min.js';
    $excluded[] = 'wpcf7';
    return $excluded;
} );

// 合并/压缩时排除指定的 CSS
add_filter( 'rocket_exclude_css', function ( $excluded ) {
    $excluded[] = '/wp-content/plugins/elementor/assets/css/frontend.min.css';
    return $excluded;
} );

// 特定 URI 不缓存(购物车、结算、我的账户)
add_filter( 'rocket_cache_reject_uri', function ( $uris ) {
    $uris[] = '/cart(.*)';
    $uris[] = '/checkout(.*)';
    $uris[] = '/my-account(.*)';
    return $uris;
} );

第四步:媒体与预加载

Media:LazyLoad for images、iframes、YouTube 缩略图替换全开。

Preload:

  • Activate Preloading:开;
  • Preload Links(鼠标悬停预取):开;
  • Sitemap Preloading:站点 URL 数少于 5000 才开,否则会持续消耗资源。

第五步:数据库清理设为手动

WP Rocket → Database:把”Automatic cleanup”关掉,改为手动点 Clean。自动清理在文章量大的站点上可能造成锁表。

第六步:用命令行验证缓存是否真的命中

for i in 1 2 3; do
  curl -sI https://mimangfei.com/ | grep -Ei '^(HTTP/|x-rocket|cache-control|age:)'
  echo "---"
done

看到 x-rocket-nginx-serving-static: HIT 或类似头,且第二次请求明显更快,说明缓存生效。清缓存可以用:

wp rocket clean --confirm
wp rocket preload --confirm

常见踩坑

  1. 开了 Combine CSS 导致布局错乱。多主题/多插件的 CSS 加载顺序被打乱,HTTP/2 下没必要开。
  2. Delay JS 把联系表单弄哑。表单脚本被延后,用户点击时脚本还没加载。必须加到排除清单。
  3. Remove Unused CSS 把动态内容的样式删了。弹窗、Tab 切换、滑块这类需要交互后才出现的样式常被误判为”未使用”。
  4. 案例:一个企业站开了 Delay JS 之后,在线客服悬浮按钮消失了三天没人发现,直到客户打电话问”你们的客服窗口是不是撤了”。原因是客服脚本被延后,而触发它的内联代码在页面加载时就执行了,此时脚本尚未加载。修复是把客服脚本域名加进 rocket_delay_js_exclusions。
  5. Sitemap Preloading 在超大站点上持续占用资源。几万个 URL 一轮爬不完,又开始下一轮。
  6. 没排除 WooCommerce 的动态页。cart、checkout、my-account 必须排除,否则用户看到别人的购物车。
  7. 改了设置没清缓存。前台还是旧文件,误以为设置没生效。

总结

WP Rocket 的最佳配置可以概括成一句话:缓存全开、压缩开、合并不开、延迟 JS 开但必须配排除、移除未使用 CSS 谨慎开、数据库清理手动跑。配置完成后做两件事验证:用 curl -I 确认缓存命中头;逐页点一遍交互元素(表单、客服、轮播、加购)确认没有脚本被延后打断。这两步做完,插件才算真正配好。

如果你的服务器跑的是 LiteSpeed,可以看 WP Rocket 与 LiteSpeed Cache 怎么选;第三方脚本的延迟加载也可参考 Flying Scripts 延迟加载第三方脚本。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。