WP-Lcache 更好的 WP 对象缓存解决方案
本文最后更新于 2576 天前,其中的信息可能已经有所发展或是发生改变。

介绍

WP LCache 是 Pantheon(高性能管理型 WP 托管商)开发的 WordPress 对象缓存解决方案,其基于 Lcache 作为底层库,使用 APCu 作为对象缓存后端。

需求

Pantheon 的对象缓存解决方案本来先采用 Memcached 后来使用 Redis,但它们发现,两者都要通过 TCP/IP 进行通信,即便数据量很小但是请求一大的时候就会造成性能瓶颈,因此 Pantheon 转向研究 APCu 了。

APC/APCu 作为 WordPress 的对象缓存后端在高性能 WordPress 托管中是非常普遍的,例如MediaTemple 和其母公司 Godaddy 均采用 APC 作为 WP 对象缓存后端,Cloudways 也是用 APCu 作为默认对象缓存后端 等等。

说明

对于高流量的动态页面加载,就必须有一个高速持久的对象缓存,Pantheon 的 Lcache 是这样设计以便 APCu 可以拥有 Redis 一样的固化特性。

Lcache 分 本地 L1 缓存(APCu)和 中央 L2(数据库) 缓存(local L1 and central L2 caches) 当 PHP 重启(或者关闭后开机)的时候,会讲数据库的数据重新写入 APCu 即内存中实现缓存固化。

Pantheon 给出的 New Relic 测试结果

Pantheon 给出的 New Relic 测试结果。 在介绍文档中,datacenter-local (but not host-local) 中使用 Lcache 比使用 Redis 减少 20% 的页面生成时间。

米饭粑的体验来看,使用 WP-Lcache 代替 Redis Object Cache 作为 WordPress 的对象缓存后,有非常可观的性能提升,至少是感觉的出后台加载速度提升的。

安装

要求: PHP 大于等于 5.6 ,APCu 4.0.11 或以上,PHP7 下性能表现更加。

一、下载 WP-Lcache 并上传,也可以在后台搜索 WP-Cache 安装。

二、激活插件

三、手动创建 wp-content/object-cache.php 文件,内容:

<?php
# Engage LCache object caching system.
# We use a 'require_once()' here because in PHP 5.5+ changes to symlinks
# are not detected by the opcode cache, making it frustrating to deploy.
#
# More info: http://codinghobo.com/opcache-and-symlink-based-deployments/
#
$lcache_path = dirname( realpath( __FILE__ ) ) . '/plugins/wp-lcache/object-cache.php';
require_once( $lcache_path );

四、WP-CLI 方式

如果安装失败了,可以考虑使用 WP-CLI(安装教程) 进行安装,运行即可:

wp plugin install wp-lcache --activate && wp lcache enable

五、没有额外的设置选项,这个插件式即开即用的,开启以后应该能明显感知到性能提升(服务器环境下)。

评论

  1. 7年前
    2017-3-09 17:03:58

    我之前测过,不如用socket的Memcached。现在APCu都版本5,有机会再试试

    • 妙正灰
      博主
      kn007
      7年前
      2017-3-09 17:39:17

      这个 Pantheon 还有一个让 rocksdb 兼容 apcu 的项目,不知道效果会如何

  2. 禅猫
    7年前
    2017-3-09 21:35:01

    现在的数据库缓存插件还有么?以前那个ob什么的貌似不能用了几年没更新了,主要想减少了查询次数。。我前端只开启ngx_cache_purge作为缓存用的

    • 妙正灰
      博主
      禅猫
      7年前
      2017-3-09 22:37:28

      有对象缓存就不用数据库缓存了

  3. 7年前
    2017-3-14 15:31:16

    博主,安装了最后爆Warning! Missing LCache database table, which is required by WP LCache object cache. See “Installation” for more details.
    LCache 数据表没有创建。这是一个什么原因呢?
    是不是WP LCache 没有激活成功?

  4. 7年前
    2017-3-14 15:32:31

    WP LCache 我是在wordpress后台下载激活的。apcu是在amh5.3面板下载安装的,并在php.ini激活。后面报这个是什么原因呢?百度没找到答案就只看到你这有安装的,求解答,.小白呀

    • 妙正灰
      博主
      刀鱼
      7年前
      2017-3-14 17:30:17

      建议使用 WP-CLI 方式安装这个插件,以免错误

  5. 刀鱼
    7年前
    2017-3-14 18:59:08

    是用cl安装wp-Lcache?这个插件的前端速度提升的怎样?相对现在流行的那个好一些?

  6. 7年前
    2017-4-29 1:24:50

    我的博客一用memcahed作为对象缓存,CPU立马100%。最近换了redis,但是时间长也也会抽风。ACPU希望能解决我的困扰。

    • 妙正灰
      博主
      Qa
      7年前
      2017-4-29 23:58:02

      原因明显不是对象缓存的锅,考虑插件兼容性,系统兼容性等等

  7. 7年前
    2017-4-29 1:59:54

    我尝试安装了apcu在php7.1.并确保它正在工作。PHPINFO显示
    Version 5.1.8
    APCu Debugging Disabled
    MMAP Support Enabled
    MMAP File Mask no value
    Serialization Support php
    但是我只需要写入 object-cache.php ,CPU马上就到100%。

  8. 好热
    7年前
    2017-8-03 1:05:26

    感谢推荐,效果够用。不过有个问题。
    php.ini中apcu设置1小时一更新,然后php-fpm就自动重启,然后网站就502,建议设置更久.
    我在测试不知道能不能解决这个问题

    • 妙正灰
      博主
      好热
      7年前
      2017-8-03 2:43:25

      apcu导致php-fpm重启?那么迷幻

      • 好热
        妙正灰
        7年前
        2017-8-03 8:58:57

        apcu有个参数 apc.ttl=3600
        然后一小时就清空一次,然后网站就502
        设置成一天果断没有问题了,不过昨晚试了几小时没问题了,但是早晨起来,还是会有500错误
        想放弃了,有些坑实在搞不定,相关资料又不多

本文评论已关闭
上一篇
下一篇