Liyang Blog

给博客上了三层缓存,现在还行

之前给博客装了 Redis,又套了 EdgeOne CDN,加上 PHP 自带的 OPCache,不知不觉凑出了三层缓存。跑了一段时间,确实比之前顺畅了些,打开页面不用等那么久了

写篇文章记录一下这个组合,给同样在优化博客的朋友参考

三层缓存各司其职

整个缓存体系分成三层,从外到内各有分工:

层级缓存类型负责内容生效范围第一层EdgeOne CDN静态资源和已缓存页面全球边缘节点,离用户最近第二层Redis数据库查询结果、动态数据服务器内存,加速 PHP 读取第三层PHP OPCache编译后的 PHP 字节码服务器内存,加速脚本执行

第一层:EdgeOne CDN 缓存

EdgeOne 负责在最外层拦截请求,缓存静态资源和已访问过的页面。配置很简单:

  1. 登录腾讯云 EdgeOne 控制台,进入站点管理
  2. 在「缓存配置」中,把静态资源的缓存时间设为 7 天以上
  3. 在「回源配置」中,确认回源地址是你的服务器 IP
  4. 保存后等几分钟,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,想优化一下访问速度,这三层缓存是个不错的起点

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »