|
|
这两天折腾了一下 xiuno 的缓存配置,踩了几个小坑,顺手把经验记下来,给后来者省点时间。xiuno 本身是个轻量论坛,缓存层做对了,后台点开列表、主题页翻滚,都会更顺滑;做错了,要么看不到加速效果,要么各种“缓存未命中”的小毛病时不时冒头。
先说 xiuno 的缓存思路。它大致分两类
:页面级缓存和数据级缓存。页面级通常是整块 HTML 的短期缓存,适合游客访问量大的列表页、主题页摘要;数据级是把帖子、用户、统计这些结构化结果丢进更快的介质里,供 PHP 取用。xiuno 的内核对缓存适配得比较松,支持 file、mysql、redis、memcached 等几种驱动,思路是“先有其用,再谈其优”。
如果只是单机、小站,file 缓存别嫌弃,命中率够、复杂度低。两个要点:第一,把 tmp 目录挂
到独立分区或至少放到 SSD 上,inode 够用、延迟低,目录下按 hash 分层,避免单目录几万小文件拖垮 I/O。第二,设置合理的过期与清理策略,别迷信“永久缓存”。小站访问稀疏,陈年旧缓存常年不被触发清理,可以用 cron 跑一个逐步清扫脚本,按 mtime 分批删,避免一次性大扫除卡死磁盘。
往上是内存型缓存。memcached 简单、够快,适合做短 TTL 的热点数据;redis 更灵活,有持久化、过期事件、Lua 脚本,做统计计数、排行榜这种原子操作更顺手 |
|