WebGee 的所有共享主机和代理主机套餐都运行在 LiteSpeed 上,这意味着最快的 WordPress 缓存已经内置在 Web 服务器中。再加上用 Redis 缓存数据库查询,并把 WordPress 的计划任务改为真正的 cron 任务,就能消除普通网站上最常见的三大拖慢因素。
本指南按照提升效果从大到小的顺序,逐一介绍每个步骤。
要点速览
- 所有 WebGee 套餐均免费提供 LiteSpeed Cache,在 cPanel 的 LiteSpeed Web Cache Manager 中点几下即可启用。
- 先使用 Essentials 预设,它不会破坏页面布局;页面优化类预设请先在预发布(staging)副本上测试。
- 在无痕窗口中查看 x-litespeed-cache 响应头,确认页面是否由缓存提供。
- Redis 是 WebGee 上唯一的对象缓存,将其接入 LiteSpeed Cache 可加快已登录用户和管理后台的访问速度。
- 用每五分钟运行一次的 cPanel cron 任务取代 WP-Cron,可避免计划任务拖慢页面加载。
开始之前
- 能够访问 cPanel 和 WordPress 管理后台
- 如果打算尝试页面优化功能,请准备一个网站的预发布副本
- 一个用于测试的浏览器无痕窗口,因为已登录状态下的页面永远不会被缓存
- 除 LiteSpeed Cache 外,没有启用其他页面缓存插件
页面缓存与对象缓存各司其职
页面缓存会存储完整渲染好的页面,匿名访客访问时完全无需运行 PHP。这项工作由 LiteSpeed Cache(LSCache)负责。
对象缓存会把数据库查询结果保存在内存中,这样 WordPress 就不必在每次加载页面时都向数据库重复同样的查询。它对已登录用户、管理后台以及页面缓存无法覆盖的内容都有帮助。这项工作由 Redis 负责。
大多数网站都能同时从两者中受益。请先设置页面缓存,因为它能为最多的访客带来最大的提升。
启用 LiteSpeed Cache
所有 WebGee 套餐均免费提供 LSCache。最快捷的方式是通过 cPanel,它会自动为您安装并配置插件:
- 登录 cPanel,打开 LiteSpeed Web Cache Manager。
- 在 LiteSpeed Cache Management 下,选择 WordPress Cache。
- 如果列表中没有显示您的安装,请选择 Scan。
- 在对应的安装旁选择 Enable。
如果插件已经安装但缓存处于关闭状态,请在 WordPress 中进入 LiteSpeed Cache → Cache,将 Enable Cache 设为 ON。
默认设置无需调整即可适用于大多数网站。清除规则已经设定为在您发布文章时清除首页、分类、标签和作者归档页的缓存,WooCommerce 的默认设置也已排除购物车和结账页面。如果某个页面出现异常,请将其添加到 Excludes 中,而不是直接关闭缓存。详见安装并启用 LiteSpeed Cache。
应用预设
预设可以一次性应用一整套配置。进入 LiteSpeed Cache → Presets,在 Standard Presets 选项卡中,点击所需预设旁的 Apply Preset。系统会先备份您现有的设置,您可以在 History 部分恢复。如果找不到 Presets,请将插件更新到 5.3 或更高版本。
- Essentials:启用缓存、延长 TTL 并开启浏览器缓存。它不会破坏您的页面布局。
- Basic:增加图片优化和移动端缓存。图片优化是 QUIC.cloud 的服务,需要一个免费的域名密钥。
- Advanced:增加大量页面优化功能。
- Aggressive 和 Extreme:增加 CSS 和 JavaScript 合并、Critical CSS 以及 Unique CSS,这些是可能产生费用的 QUIC.cloud 服务。
请从 Essentials 开始。它能带来绝大部分可获得的提升,而它与激进预设之间的差距,在实际加载时间上远比在页面速度评分上小得多。之后每次只升一级,并在每次调整后进行测试。详见 LiteSpeed Cache 预设。
页面优化最容易导致网站出问题 从 Advanced 开始,压缩和合并 CSS 与 JavaScript 可能会在不知不觉中破坏页面布局或导致某个脚本失效,而且往往只发生在某一个模板上。请在预发布副本上测试这些预设,切勿直接在线上网站上操作,并做好排除冲突文件的准备。
确认页面已被缓存
在 Chrome 无痕窗口中打开网站,按 F12,切换到 Network 选项卡并刷新页面。选择第一条记录(即 HTML 文档),在 Response Headers 中查找 x-litespeed-cache:
hit:由缓存提供,说明缓存正常工作。miss:由 PHP 生成并已存入缓存。再刷新一次,应当会显示 hit。- 没有该响应头:页面未被缓存。
如需快速检查单个 URL,可以使用 check.lscache.io。如果没有任何页面被缓存,请确认插件已启用,检查网站根目录中是否存在 .litespeed_flag 文件,并移除所有与之冲突的缓存插件。两个页面缓存同时运行会相互冲突,通常结果是两个都无法正常工作。详见检查 LiteSpeed Cache 是否正常工作。
关于爬虫 LSCache 爬虫会预先加载页面,让第一位访客无需等待。由于它对共享服务器的资源消耗过大,该功能在共享主机上已禁用。Premium Hosting 和 Premium Reseller 套餐可以使用该功能。
添加 Redis 对象缓存
Redis 是 WebGee 上的对象缓存方案。Memcached 已停用,其 PHP 扩展也已在全平台禁用,因此仍配置为使用 Memcached 的网站实际上根本没有启用对象缓存。对于插件众多、商品目录庞大或管理后台缓慢的网站,Redis 的效果最为显著;而对于已经由页面缓存提供服务的小型展示类网站,它的作用则不大。
1. 在 cPanel 中启用 Redis
在 cPanel 中打开 Redis,选择 Enable Redis,并记下页面显示的端口和密码。
2. 启用 PHP 扩展
打开 Select PHP Version,选择 Extensions,然后勾选 redis。更改会立即生效。
3. 将 LiteSpeed Cache 指向 Redis
在 WordPress 中,进入 LiteSpeed Cache → Cache → Object,并进行如下设置:
- Object Cache:
On - Method:
Redis - Host:
127.0.0.1 - Port 和 Password:填写第 1 步中记下的值
- Username:留空
点击 Save。同一页面上的连接状态应显示为 Passed。如果显示 Connection refused,说明 Redis 未在运行;Class 'Redis' not found 表示 PHP 扩展未启用;Authentication failed 表示密码错误。每次禁用后重新启用 Redis,密码都会重新生成,因此请从 cPanel 中重新复制密码。详见启用 Redis 对象缓存和我应该使用哪种对象缓存?。
用真正的 cron 任务取代 WP-Cron
每当有人加载页面时,WP-Cron 都会检查是否有待执行的计划任务。在访问量大的网站上,这项检查可能需要等待 PHP 工作进程,从而让访客一直等待;而在访问量小的网站上,由于没有人加载页面,定时发布的文章和备份任务根本不会运行。
首先,将以下内容添加到 wp-config.php 中 /* That's all, stop editing! */ 这一行的上方:
define( 'DISABLE_WP_CRON', true );然后在 cPanel 中打开 Cron Jobs,将执行频率设为 Once Per Five Minutes,并输入以下命令。请将 cpaneluser 替换为您的 cPanel 用户名;如果 WordPress 没有安装在 public_html 中,请相应调整路径:
cd /home/cpaneluser/public_html && /usr/local/bin/php -q wp-cron.php > /dev/null 2>&1五分钟的间隔适合大多数网站,WooCommerce 商店则应保持五分钟,因为订单处理和库存更新都依赖于它。> /dev/null 2>&1 可以防止 cPanel 在每次运行后都把输出结果发邮件给您。您可以使用 WP Crontrol 插件,在 Tools → Cron Events 中确认任务是否正常运行。详见用真正的 cron 任务取代 WP-Cron。
如果后台仍然很慢
wp-admin 永远不会被页面缓存,因此会暴露出被前台缓存掩盖的问题。原因通常出在网站本身,而不是服务器。请按以下顺序逐一排查:
- 先进行测量。安装 Query Monitor,查看页面生成时间、查询次数、最慢的查询以及发起这些查询的插件。cPanel 中的 PHP X-Ray 无需安装任何东西,即可从服务器端对请求进行性能分析。
- 找出问题插件。大多数后台缓慢的问题都是由某一个表现不佳的插件造成的。如果 Query Monitor 没有指出是哪个插件,请在预发布副本上逐个停用插件进行排查。
- 限制 Heartbeat API 在前台和后台的运行,但在文章编辑器中保留它,因为自动保存功能依赖于它。
- 提高内存限制,在
wp-config.php中进行设置。WooCommerce 建议设为 256 MB,WebGee 套餐最高允许 1 GB。 - 使用较新的 PHP 版本,可通过 cPanel 的 MultiPHP Manager 进行切换,并在 PHP 扩展中启用 OPcache。
即使某个插件提供了相关选项,也不要缓存 wp-admin。否则您会看到过时的订单数量和库存水平,并据此做出错误的操作。详见改善缓慢的 WordPress 或 WooCommerce 后台。
常见问题
为什么我的页面显示 x-litespeed-cache: miss?
miss 表示该页面由 PHP 生成后被存入缓存,首次加载时出现属于正常现象。再刷新一次,应当会显示 hit。请在无痕窗口中测试,因为已登录状态下的页面永远不会被缓存。
我可以用 Memcached 代替 Redis 吗?
不可以。WebGee 已停用 Memcached,PHP memcached 扩展也已在全平台禁用,因此 Redis 是唯一受支持的对象缓存。
我应该使用哪个 LiteSpeed Cache 预设?
先从 Essentials 开始,它会启用缓存、延长 TTL 并开启浏览器缓存,且不会改动您的页面布局。之后每次只升一级,并在每次调整后进行测试,最好在预发布副本上操作。
为什么我的套餐无法使用 LSCache 爬虫?
爬虫功能在共享主机上已禁用,因为逐一访问每个网站的每个页面会占用过多共享服务器资源。Premium Hosting 和 Premium Reseller 套餐可以使用该功能。