给博客上了三层缓存,现在还行
之前给博客装了 Redis,又套了 EdgeOne CDN,加上 PHP 自带的 OPCache,不知不觉凑出了三层缓存。跑了一段时间,确实比之前顺畅了些,打开页面不用等那么久了
写篇文章记录一下这个组合,给同样在优化博客的朋友参考
三层缓存各司其职
整个缓存体系分成三层,从外到内各有分工:
层级缓存类型负责内容生效范围第一层EdgeOne CDN静态资源和已缓存页面全球边缘节点,离用户最近第二层Redis数据库查询结果、动态数据服务器内存,加速 PHP 读取第三层PHP OPCache编译后的 PHP 字节码服务器内存,加速脚本执行第一层:EdgeOne CDN 缓存
EdgeOne 负责在最外层拦截请求,缓存静态资源和已访问过的页面。配置很简单:
- 登录腾讯云 EdgeOne 控制台,进入站点管理
- 在「缓存配置」中,把静态资源的缓存时间设为 7 天以上
- 在「回源配置」中,确认回源地址是你的服务器 IP
- 保存后等几分钟,CDN 就开始缓存了
第二层:Redis 动态数据缓存
CDN 只能缓存静态内容,文章列表、评论这些动态数据还是得靠后端。Redis 把数据库查询结果缓存在内存里,省去重复查询
安装 Redis:
sudo apt update
sudo apt install redis-server -y
sudo systemctl start redis-server
sudo systemctl enable redis-server设置密码和内存上限:
sudo nano /etc/redis/redis.conf修改以下两行:
requirepass 你的强密码
maxmemory 256mb
maxmemory-policy allkeys-lru重启 Redis:
sudo systemctl restart redis-server安装 PHP Redis 扩展和 TpRedis 插件:
sudo apt install php8.1-redis -y
sudo systemctl restart php8.1-fpm
cd /var/www/html/usr/plugins/
sudo git clone https://github.com/fungjcode/TpRedis.git
sudo chown -R www-data:www-data TpRedis/
sudo chmod -R 755 TpRedis/去 Typecho 后台启用 TpRedis,填写 Redis 主机 127.0.0.1、端口 6379、你设的密码,缓存过期时间设 3600 秒,保存即可
第三层:PHP OPCache 脚本缓存
PHP 默认每次执行脚本都要重新解析和编译,OPCache 把编译后的字节码缓存起来,下次直接用缓存
这个不用额外装,PHP 8.1 自带。确认是否已启用:
php -v输出里有 Zend OPcache 字样就说明已生效。如果想调整参数,编辑配置文件:
sudo nano /etc/php/8.1/fpm/php.ini确认以下参数存在:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000保存后重启 PHP-FPM:
sudo systemctl restart php8.1-fpm写在最后
跑了一段时间,整体感觉还行。打开页面比之前快了些,后台操作也顺畅了些。虽然做不到秒开,但已经比最开始动不动卡几秒的状态好多了
这套缓存组合不是什么新鲜东西,我只是把它们一个个装上去,调试了一下,确认能正常工作。如果你也在用 Typecho,想优化一下访问速度,这三层缓存是个不错的起点