
为什么虚拟主机上的 WordPress 需要缓存
很多外贸站长和企业官网把站点放在虚拟主机上,图的是省心:不用管系统运维,控制面板点几下就能上线。但跑了一段时间后,问题慢慢出现——首页打开要 3 到 5 秒,PageSpeed 移动端分数长期停在 40 分上下,客户等不到页面加载完就关掉了。
造成慢的直接原因有两个:一是虚拟主机的 CPU 和内存配额有限,二是 WordPress 每次被访问都要现场执行 PHP 代码、查询数据库几十次。如何在不升级主机套餐的前提下把加载时间降下来?答案是配置好两层缓存:页面缓存把整页 HTML 存下来直接返回,对象缓存减少重复的数据库查询。
这篇文章会带你完成从插件选择、参数配置到效果验证的完整流程,并给出一组在同一台入门虚拟主机上实测的前后数据。如果你正在用虚拟主机建站,照着做就能复现大部分收益。
两层缓存各自解决什么问题
配置之前先把概念分清,否则很容易装一堆插件却互相冲突。
页面缓存(Page Cache) 解决的是”每次访问都重新渲染整页”的问题。启用后,第一位访客触发的完整 HTML 会被存成静态文件;后续访客直接拿到这份文件,PHP 和数据库完全不参与。对虚拟主机来说,这一层收益最大——它把 90% 以上的请求变成了近乎零开销的静态文件服务。
对象缓存(Object Cache) 解决的是”同一次请求里反复查询数据库”的问题。WordPress 渲染一个页面通常要执行几十条 SQL,其中很多是重复的,比如菜单、侧边栏小工具、站点设置。对象缓存把这些查询结果存进共享内存,重复调用时直接命中缓存。它不减少页面数量,而是减少每一次动态渲染的成本。
两者的关系可以这样理解:页面缓存是”整页不用算”,对象缓存是”必须算的那次算得更快”。页面缓存命中率越高,对象缓存的存在感越弱;但在后台操作、购物车这类无法整页缓存的场景里,对象缓存就是唯一的加速手段。
另外提醒一句,虚拟主机和 VPS 主机 在缓存上的自由度不同:虚拟主机一般没有 SSH 权限装 Redis 服务端,所以下面的方案都以插件内置的磁盘缓存为主。
页面缓存配置步骤(以 WP Super Cache 为例)
虚拟主机上首选 WP Super Cache:它由 Automattic(WordPress 母公司)维护,免费,兼容性好,而且不需要服务器端组件。下面是完整配置流程。
第 1 步:安装并启用。 在后台「插件 → 安装插件」搜索 WP Super Cache,安装后启用。如果主机商的安全策略拦截安装,可改用 FTP 上传到 wp-content/plugins/ 目录。
第 2 步:开启缓存模式。 进入「设置 → WP Super Cache」,在「Easy」标签页勾选「Caching On」并保存。然后在「Advanced」标签页选择「Expert (mod_rewrite)」模式——它让 Web 服务器直接返回缓存文件,绕过 PHP,比默认模式快。保存时插件会自动重写 .htaccess,如果提示权限错误,检查该文件是否可写(权限 644 或 664)。
第 3 步:设置缓存有效期。 在「Advanced」页找到「Cache Timeout」,填 3600 秒(1 小时)。内容更新频繁的新闻类站点可以调低到 600 秒;企业官网几天才更新一次的,可以放宽到 43200 秒(12 小时)。
第 4 步:排除动态页面。 在「Accepted filenames」区域确认这些路径不在缓存范围:wp-admin、wp-login.php、购物车和结算页(WooCommerce 站点必须排除 /cart、/checkout、/my-account)。漏掉结算页会导致不同客户看到彼此的购物车内容,这是实际发生过的生产事故。
第 5 步:压缩与移动端。 勾选「Compress pages」(gzip 压缩);主题是响应式的话,手机访客也可以直接命中缓存。
配置完成后点击「Delete Cache」清空旧缓存,再重新访问一次首页触发生成。

对象缓存配置:虚拟主机上的现实做法
标准做法是用 Redis 或 Memcached 做对象缓存后端,但虚拟主机通常不开放这两个服务的端口,也不给 SSH 权限。在虚拟主机环境里,可行的方案按优先级排列如下。
方案 A:主机商内置的加速组件。 一些商业虚拟主机在服务器层面内置了 OPcache 和对象缓存支持,PHP 进程本身会把编译后的脚本和部分数据保留在内存里。以 Hostease 的 虚拟主机 为例,PHP 环境默认开启 OPcache,配合上面的页面缓存插件即可覆盖大部分场景,不需要额外装对象缓存插件。先确认你的主机是否已有这层加速,再决定要不要加插件。
方案 B:Transients 优化插件。 如果站点大量依赖外部 API(比如汇率、物流查询),结果通常存在数据库的 wp_options 表里。装上 Transients Manager 这类插件,把过期时间改为合理的 3600 秒,避免 wp_options 表膨胀拖慢查询。
方案 C:迁移到 VPS(虚拟专用服务器)。 当站点日均 PV 超过 1 万、动态请求占比高(会员系统、在线商城)时,虚拟主机的磁盘对象缓存收益有限,这时应考虑迁移到带 Redis 的 VPS 主机。Redis 的读写延迟在 0.1 毫秒量级,而磁盘缓存文件系统的开销通常在 1-5 毫秒,差一个数量级。迁移前建议先看一遍我们整理的服务器性能优化相关内容,评估好资源规格再动手。
虚拟主机上不要尝试用文件方式硬模拟 Redis(有些教程会让你在 wp-content 里放 object-cache.php 指向磁盘目录),这种做法在共享环境里磁盘 I/O 反而比数据库查询慢,实测中出现过 TTFB 从 800 毫秒恶化到 1.4 秒的案例。
实测:配置前后的数据对比
测试环境:一台入门配置的共享虚拟主机(1 核 CPU、1 GB 内存、PHP 8.1),WordPress 6.4,默认主题,装有一个商城插件。每组数据取 10 次请求的中位数。
配置前的基线数据:
- 首页 TTFB(首字节时间,即从发起请求到收到第一个字节的时间):2,140 毫秒
- 首页完整加载:3.6 秒
- 数据库查询次数:每次请求 68 条 SQL
- PageSpeed 移动端评分:43 分
启用 WP Super Cache(Expert 模式 + gzip)并确认 OPcache 开启后:
- 首页 TTFB:118 毫秒,约为配置前的 1/18
- 首页完整加载:1.1 秒,其中大头是图片下载
- 数据库查询次数:命中缓存的请求为 0 条 SQL
- PageSpeed 移动端评分:67 分,其余扣分项是图片尺寸,与缓存无关
后台场景的变化同样明显:登录管理员打开文章列表页,从 4.2 秒缩短到 2.8 秒——这部分收益来自 OPcache 对 PHP 脚本编译的加速,说明主机内置的加速组件在动态请求里确实在工作。
你可以用一条命令自己验证缓存是否命中(把域名换成自己的):
curl -s -o /dev/null -D - https://你的域名/ | grep -i -E "cache|wp-super-cache"
如果响应头里出现 WP-Super-Cache: Served supercache file 字样,说明请求已经由缓存文件直接服务;没有这一行就说明该请求仍在走 PHP 动态渲染,需要检查上一节的排除规则是否配置过宽。

常见问题与排查思路
改了文章前台不更新。 页面缓存还在服务旧文件。先点插件里的「Delete Cache」,再确认「Cache Rebuild」选项已开启,最后检查服务器时间是否准确(缓存过期判断依赖服务器时钟)。
登录用户看到访客版页面。 说明「Don’t cache pages for known users」没勾,在 Advanced 页勾选它,让登录态请求绕过缓存。
缓存目录占用空间暴涨。 缓存文件存在 wp-content/cache/ 下,正常只有几十 MB。如果涨到 GB 级,通常是垃圾机器人遍历带查询参数的 URL,在「Rejected URLs」里拒绝带 ? 的请求即可。
TTFB 依然很高。 缓存全部生效后 TTFB 仍超过 1 秒,问题多半不在缓存层:检查是否有插件在每次请求里同步调用外部 API(字体图标库、社媒分享按钮最常见),用 Query Monitor 插件定位拖慢请求的具体函数,比盲目堆缓存插件有效。
总结与下一步建议
核心结论是:虚拟主机上的 WordPress 加速,八成收益来自页面缓存,两成来自主机内置的 OPcache 等加速组件,配置成本不到半小时。按本文步骤启用 WP Super Cache 的 Expert 模式、排除好动态页面、再用 curl 验证响应头,大多数站点都能把 TTFB 从 2 秒级压到 200 毫秒以内。
我们建议的做法是:先在低峰时段完成配置并全站点检一遍关键页面(首页、文章页、购物车),确认无串页后再进入高峰期。日均 PV 过万或动态业务占比持续上升的站点,可以考虑升级到带 Redis 支持的 VPS 或云服务器(由云平台统一托管的虚拟化服务器),欢迎联系 Hostease 了解适合你的方案。配置卡住时,把 curl 的响应头发给我们,帮你判断缓存是否生效。