缓存清理后页面仍慢,说明问题不在旧缓存残留,而是缓存未生效或瓶颈在其他层;需分层排查:确认缓存是否命中(数据库、输出、驱动三类)、检查数据库索引与连接、优化php运行开销、提速静态资源。

缓存清理后页面仍慢,说明问题不在旧缓存残留,而是缓存没真正生效、或瓶颈根本不在缓存层。需要分层排查:先确认缓存是否被正确调用,再检查数据库、PHP运行环境和前端资源。
确认缓存是否实际命中
很多“清理后还慢”的情况,其实是缓存压根没启用或没命中。CodeIgniter的缓存分好几类,得逐个验证:
- 数据库查询缓存只对 SELECT 生效,且需在
application/config/database.php中明确开启:$db['default']['cache_on'] = TRUE;,并设置cachedir指向可写目录 - 输出缓存(页面级)需手动调用
$this->output->cache(300)(单位秒),或通过中间件自动写入;仅清空application/cache/目录不代表它正在被使用 - 驱动缓存(如 Redis)要检查
.env中CACHE_HANDLER=redis是否生效,并用cache()->get('key')手动测试读写
检查数据库连接与查询效率
多语言站点常因语言字段未索引、JOIN 过多或查询重复执行拖慢响应。尤其注意:
Gene6 FTP Server Professional v3.10.0.2 多语言特别版(集成了中文)
- 语言切换时是否每次都重新查翻译表?建议把常用语言包缓存到 Redis,用
cache()->save('lang_zh', $data, 3600)预加载 - 确认
pconnect = TRUE已启用——避免每次请求都新建 MySQL 连接,这对多语言路由频繁切换特别关键 - 用
EXPLAIN分析带WHERE lang = 'en'的查询,确保lang字段有索引
优化 PHP 与框架运行开销
CodeIgniter 默认加载较多辅助函数和类,多语言场景下更易放大开销:
- 关闭调试模式:
CI_ENVIRONMENT=production,并设log_threshold = 0,避免日志写入磁盘 - 精简自动加载项,在
app/Config/Autoload.php中只保留必需的 helper 和 library - 升级到 CodeIgniter 4 并启用 OPcache —— 它能缓存编译后的 PHP 字节码,比文件缓存对多语言模板解析提速更直接
静态资源与传输层面提速
多语言常伴随多套 CSS/JS/图片,容易引发重复加载或未压缩问题:
- 为不同语言版本添加唯一哈希后缀(如
style-zh.abc123.css),避免浏览器复用错误语言的缓存 - 启用 Gzip 或 Brotli 压缩,在 Nginx/Apache 中配置,尤其对 JSON 翻译文件效果明显
- 把语言包内联进 HTML 的
<script></script>标签(适合小体量),省去额外 HTTP 请求










