启用APCu对象缓存优化加速WordPress网站
APCu(Alternative PHP Cache User)是 PHP 的内存缓存系统,用于存储数据以便快速检索。它是 APC(Alternative PHP Cache)的简化版本,专为 PHP 应用程序中的对象缓存而设计。配置操作简单,与PHP无缝对接,且相对Redis服务器负载要求更低,速度更快。本文老白博客就简单谈谈在宝塔面板环境下,WordPress网站如何启用APCu优化加速以及APCu Manager插件的使用方法。
1.APCu简单介绍
APCu是php进程开辟出来的一块共享内存空间,不同php进程访问apcu就像访问自己进程中的数据一样,而redis是需要走网络请求的,访问内存的速度大概在纳秒级别 ,网络请求的速度在毫秒级别,同机架或同机房的机器可能在1/10ms左右,还不是考虑服务稳定、网络稳定的情况下。
1.1 优点
- 简单:APCu 的安装和配置相对简单。它与 PHP 无缝集成,不需要额外的服务器基础设施。
- 性能:作为内存缓存,APCu 提供快速的数据访问速度并显著提高 PHP 应用程序的性能。
- 低开销:APCu 重量轻且不消耗太多资源,适合小型到中型 WordPress 安装。
1.2 缺点
- 单服务器限制: APCu 仅在单台服务器上运行,因此不适合多服务器环境。
- 没有高级功能: APCu 缺乏 Redis 提供的高级功能和数据结构支持。
- 没有数据持久性:与 Memcached 一样,APCu 不提供数据持久性,因此服务器重启时所有缓存数据都会丢失。
2. APCu和redis读写测试
简单的对redis和APCu进行一下读取和写入测试。
$start = microtime(true);
// 写入apcu数据
for ($i=0;$i<100000;$i++) {
$res = apcu_add('1aa'.$i, '1', 1000);
}
$end = microtime(true) - $start;
print_r("Apcu写入耗时:".$end. PHP_EOL);
$start = microtime(true);
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 写入redis数据
for ($i=0;$i<100000;$i++) {
$res = $redis->set('1aa'.$i, '1');
}
$end = microtime(true) - $start;
print_r("Redis写入耗时:".$end. PHP_EOL);
测试结果
APCu写入100000次耗时:0.7秒
Redis写入100000次耗时:8.9秒
APCu读取100000次耗时:0.7秒
Redis读取100000次耗时:8.7秒
该测试基于redis部署在我本机,基本没有网络开销的情况下,APCu的读和写的速度都是redis的12倍,如果再加上网络开销,那速度差距只会更大。
(本测试选自:https://tech.qimao.com/qian-tan-phpxing-neng-you-hua-apcu/)
3.宝塔PHP安装启用APCu
对于非宝塔面板,请参照:https://www.php.net/manual/zh/book.apcu.php
3.1 安装APCu
如下图,打开PHP,选择安装拓展
感谢不凡提示,只有PHP8.1及其以上版本才支持安装apcu
3.2 APCu配置
打开PHP.ini,或者直接选择PHP——配置文件
官方说明:https://www.php.net/manual/zh/apcu.configuration.php
下面介绍几个常用的:
apc.enabled
:启用或禁用 APCu。设置为1
表示启用,设置为0
表示禁用。默认值为1
apc.shm_segments
:为编译器缓存分配的共享内存段数量。默认为1
apc.shm_size
:共享内存大小。默认值为32M
apc.ttl
:缓存对象的生命周期(以秒为单位)。默认值为0
,表示永不过期apc.enable_cli
:是否启用 APCu 的 CLI 模式。1
表示启用,0
表示禁用。默认值为0
3.3 GUI图形界面(可选)
把apc.php
拷贝到项目中就能查看
apc.php
获取方式:
https://github.com/krakjoe/apcu 找到apc.php
并下载
图形效果:
其中关键信息:
- Cached Variables key数量及大小
- Hits 缓存总命中次数
- Misses 缓存总未命中次数
- Runtime Settings 运行时配置
- Host Status Diagrams 内存占用饼图和命中与未命中柱状图
4. WordPress安装APCu插件
通过搜索WordPress插件市场可以发现,支持APCuc的插件还是很多的,老白推荐选择安装量大且更新较快的APCu Manager。
安装后直接启用即可,主要的就是管理中心和缓存内容分析两部分
5.老白有话说
对于我的网站影响不太大,相差就是100-200ms的加载,大家可以根据自己的网站选择合适的对象缓存即可。
5.1 memcached
比较适合小流量站,博客,教程见
纯代码免插件优化WordPress6.3实现0sql-强化拓展
5.2 Redis
通用的对象缓存,特别适合大流量,技术成熟。
5.3 nginx fastcgi
fastcgi较为麻烦,生态没有mem和redis完善,但是速度上几乎可以算最快的
支持NGINX FastCGI缓存清除的三大WordPress插件
5.4 apcu
APCu不是太了解,老白没有大流量站来测试,用在小博客也挺Happy的,目前我的网站就是apcu
更多WordPress优化教程可点击底部标签阅读!
文中还要加一句,安装APCu扩展只支持PHP8.2及以上的版本
你的博客评论不了了,提示:WP NONCE验证失败,判定为机器人恶意发送的垃圾评论!
主题有内置拦截评论功能,是主题拦截了,我在无痕模式用别的邮箱发表评论是正常的
那估计是缓存,我觉得这功能没太大必要。你加个禁止全英文或者日语评论就够了🤗
我把主题内置的验证评论的代码删掉了,缓存也清除了。
刚才我用电脑访问这篇文章的时候,评论还是昨晚的,也就是昨晚的缓存,之前的评论我是在手机浏览器发布的,然后我在电脑浏览器按Ctrl+F5强制刷新页面,显示了所有评论
哎,你还别说,我真没注意,不对劲。我的测试站php81装上了apcu,且可用😂😂
刚才看了插件简介,我记错了,要是8.1及以上的版本
你现在用的是apcu还是redis,我感觉apcu这个插件和redis object差不多,完全没啥好设置的
现在是APCu,我觉得APCu适合小网站,redis适合数据较多的网站
我这就更新下😂