需求

Typecho虽然轻量,但终究仍是PHP动态脚本。
访问时需要频繁调取数据库的信息,导致并发值一高,CPU就100%占用,无法处理新的请求信息。

这时,我们可以用Redis来设置缓存,从而不用频繁调动数据库,来达到加速访问的目的。

注意:Redis仅支持Linux系统,如果你是Windows系统,可考虑其他软件。

介绍

Redis是一个高性能的key-value数据库。

  • 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • 支持数据的备份,即master-slave模式的数据备份。

安装

如果是宝塔面板的话后台软件管理页面直接有,可以一键安装。
我选的就是此种方法,简单方便

以下是手动安装:

安装Redis

根据官网页面提示操作下载安装即可。

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make

安装php-Redis扩展

Github项目说明:https://github.com/phpredis/phpredis/blob/develop/INSTALL.markdown

pecl install redis

最后打开PHPINFO页面查看Redis扩展是否安装成功。

安装插件 TpCache

项目地址:https://github.com/phpgao/TpCache
备份下载:https://cloud.foxl.cn/s/nau3r6po
感谢作者老高的插件!

直接上传到插件目录解压,注意修改文件夹名称,即去掉-master后缀。

使用

插件页面配置:

  • 需要缓存的页面 全选除Feed
  • 是否对已登录用户失效 开启
  • 是否支持SSL 根据实际情况选择
  • 缓存驱动 Redis
  • 缓存过期时间 86400
  • 主机地址 127.0.0.1
  • 端口号 6379
  • 是否开启debug 关闭
  • 清除所有数据 关闭

效果

目前200并发值CPU占用15%左右,效果提升还是很明显的。

BUG

这个就是目前方案的最大问题了。

  1. 文章阅读次数也被缓存,导致统计不到,一直是同一个次数。
  2. 原生评论访客评论后也会留下缓存信息,即下一个访客会显示上一个访客留下的姓名邮箱信息。

曲线解决

  1. 使用第三方页面次数统计服务
  2. 使用第三方评论系统
最后修改:2019 年 11 月 02 日 09 : 37 AM
如果觉得我的文章对你有用,请随意赞赏