Typecho虽然轻量,但终究仍是PHP动态脚本。
访问时需要频繁调取数据库的信息,导致并发值一高,CPU就100%占用,无法处理新的请求信息。
<!--more-->
这时,我们可以用Redis来设置缓存,从而不用频繁调动数据库,来达到加速访问的目的。
注意:Redis仅支持Linux系统,如果你是Windows系统,可考虑其他软件。
# 介绍
Redis是一个高性能的key-value数据库。
- 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- 支持数据的备份,即master-slave模式的数据备份。
# 安装
如果是[宝塔面板](https://www.bt.cn/?invite_code=MV9pcGtxb3E=)的话后台软件管理页面直接有,可以一键安装。
我选的就是此种方法,简单方便
以下是手动安装:
## 安装Redis
根据[官网页面](https://redis.io/download)提示操作下载安装即可。
``` shell
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
``` shell
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. 使用第三方评论系统
网友评论