缓存与性能开发规范
元数据缓存、模板缓存、页面缓存、标签缓存和性能验收规则
缓存与性能开发规范
缓存是性能能力,也是状态一致性能力。谁改变结构,谁负责失效。
一、缓存类型
| 类型 | 场景 |
|---|---|
| 元数据缓存 | 栏目、模型、字段、系统设置 |
| 模板编译缓存 | TanzCMS .html 模板编译结果 |
| 模板标签缓存 | 标签查询结果 |
| 页面响应缓存 | 游客可复用页面 |
| 菜单缓存 | 后台菜单、会员菜单、插件菜单 |
二、失效时机
以下变化必须清理相关缓存:
- 栏目新增、编辑、删除、排序和外链变化。
- 内容发布、更新、删除。
- 模型和字段变化。
- 系统设置变化。
- 插件启用、禁用、安装、卸载。
- 会员菜单变化。
- 订单、支付、购买状态会影响前台按钮时。
三、页面缓存边界
游客公开页面可以缓存。会员中心、登录注册、找回密码、含真实 CSRF 或个人身份的页面不进入普通页面响应缓存。
不要缓存带真实 _token 的完整会员认证页面。
四、标签性能
模板标签应限制最大返回数量。列表页不要在每条内容中重复执行重查询。
推荐:
- 批量查询。
- 只查必要字段。
- 使用索引。
- 合理缓存。
- 明确空数据分支。
五、静态资源
模块资源发布到 public/assets/modules/{code}/,插件资源发布到 public/assets/plugins/{code}/。线上访问静态资源时,应由 Web 服务器或静态响应层处理缓存头。
六、慢请求排查
慢页面优先检查:
- 是否命中页面缓存。
- 模板是否重复查询。
- 标签是否缺少限制。
- 数据库是否缺索引。
- Session 是否造成串行等待。
- 静态资源是否 404 或反复动态处理。
七、上线验收
性能验收不只看首页。至少覆盖首页、栏目页、详情页、搜索页、会员中心、后台页和插件关键页。
缺少样本时不能说明性能达标,只能说明还没有覆盖对应路径。