🚀 EMLOG 全站缓存加速插件 — 功能介绍
作者:落寞 发布时间: 分类:Emlog 系列
一、这是什么
cnlm_cache_rocket 是一个给 EMLOG 博客加速的全站 HTML 缓存插件。它在游客访问博客时,把页面渲染结果存成静态 HTML 文件,下次同样的请求进来,直接读文件输出,跳过整个 PHP 框架路由和数据库查询。
二、核心工作原理
插件主文件有一段代码在框架初始化后、路由分发前直接执行:

① 检查缓存文件是否存在 + 未过期 → 命中则 echo 输出 + exit,后续框架代码一行都不跑;
② 没命中 → 框架正常跑完,在 index_footer 钩子(所有模板 footer 末尾都会触发)用 ob_get_contents() 拿到完整 HTML,写入缓存文件。
命中缓存时服务器 CPU 负载和 MySQL 查询都是 0,响应时间从几百毫秒降到几毫秒。
三、缓存失效策略(六种自动清缓存)
文章发布 / 文章编辑 / 文章删除 / 页面保存 / 分类增删改 / 评论发布 / 媒体删除 — 这六种操作全部挂上了清缓存钩子,后台一改内容,前台立即看不到过期页面。
四、智能排除规则(哪些页面不缓存)
已登录用户的所有页面、搜索结果页、用户中心页面、REST API 接口、插件自定义页面、下载页面、AJAX POST 请求、评论分页锚点 — 这些全部跳过缓存,保证看到的永远是最新内容。
五、Gzip 压缩输出
如果服务器装了 zlib 扩展,且浏览器声明支持 gzip,插件会自动把缓存文件 gzencode 后输出,传输体积压缩 60% 到 80%。
六、开发者调试标识
浏览器 F12 → Network → Response Headers,每次请求都会带:
X-Cache: HIT 表示命中了缓存;
X-Cache: MISS 表示第一次生成(框架跑了一遍);
X-Cache-Age: 1234s 附带缓存文件已经存在多久。
七、后台管理面板
四 Tab 标准结构:插件设置(开关 / 有效期 / Gzip / 实时统计卡片 / 缓存规则说明)、更新记录、关于插件、版本更新。支持一键清缓存按钮。
八、配置项一览
缓存开关(默认开启)、缓存有效期(可选 5 分钟 / 15 分钟 / 30 分钟 / 1 小时 / 2 小时 / 4 小时 / 1 天)、Gzip 压缩(默认开启)。
九、兼容性
不依赖任何自定义数据库表,全部配置存在 Storage KV,缓存文件存在 content/cache/cnlm_cache_rocket/ 目录。兼容所有官方模板和第三方模板,因为用的是 index_footer 钩子,所有模板 footer 末尾都有 doAction('index_footer')。PHP 7.4 到 8.3 都测试通过。
十、安装步骤
解压后把 cnlm_cache_rocket 目录放进 content/plugins/,后台插件管理点「启用」,回调函数自动创建缓存目录,开箱即用。


暂无评论,快来抢沙发~