- 1.2 环境搭建&安装
- 1.3 项目说明
- 1.4 路由说明
- 1.5 目录结构
- 2.1 模板
- 2.1.1 前台模板
- 2.1.2 后台模板
- 2.1.3 模板标签
- 2.1.3.1 content内容标签
- 2.1.3.2 spf内容标签
- 2.1.3.3 tags内容标签
- 2.1.3.4 comment评论标签
- 2.1.3.5 position推荐位标签
- 2.1.3.6 get数据获取标签
- 2.1.3.7 template模板引入标签
- 2.1.3.8 navigate导航标签
- 2.1.3.9 pre上一篇标签
- 2.1.3.10 next下一篇标签
- 2.1.3.11 blockcache区块缓存标签
- 2.2 行为管理
- 2.2.1 行为规则
- 2.2.2 使用方法
- 2.2.3 测试Behaivor
- 2.3 模块开发
- 2.4.1 权限
- 2.4.2 框架页
- 2.4.3 消息中心
- 2.4.4 登录页安全
- 2.5 请求缓存
- 3.1 Auth
- 3.1.1 通用授权
- 3.1.2 自动登录授权
- 3.1.3 开放平台授权
- 3.2 Wechat
- 3.2.2 v2.x
- 3.3 Area
- 3.3.1 中国区域
- 3.3.2 中国高校
- 3.4 Sms
- 3.4.1 v3
- 3.4.2 v2
- 3.5 Cron
- 3.6 Transport
- 3.6.1 使用
- 3.6.2 最佳实践
- 3.7 Message
- 3.8 Record
- 3.8.1 数据结构
- 3.8.2 使用指南
- 3.9 Wxapp
- 3.10 Log
- 3.11 Alipay
- 3.12 Unionpay
- 3.13 Oss
- 3.14 Chart
- 3.15 Queue
- 3.16 Mirror
- 3.17 Wap
- 3.18 Shop
- 3.19 Search
- 3.20 Addons
- 3.21 Collection
- 3.22 Comment
- 3.23 Domain
- 3.24 Form
- 3.25 Link
- 3.26 Vote
- 3.27 Member
- 4.1 规范和约定
- 4.2 部署指南
- 4.3 常见错误
- 4.4 开发Tips汇总
- 4.4.1 模块
- 4.4.2 自定义后台iconfont
- 4.4.3 自定义成功(失败)页面
- 4.4.4 自定义栏目列表搜索条件
- 4.4.5 根据管理员的权限显示
- 4.5 数据库的存储引擎
- 4.6 行为管理最佳实践
- 4.7 性能优化
- 4.8 ThinkPHP
- 4.8.1 模型
- 4.9.1 发送邮件
- 5.1 系统函数
- 5.2 技术栈
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2.5 请求缓存
实现原理
实现参考『Thikphp 3.2-静态缓存』, 静态缓存只能提供HTML的缓存且只能以文件形式进行缓存。而请求缓存,支持ajax/html的缓存,而且可以根据缓存配置自行切换文件/redis的缓存
缓存检测:
行为app_begin
时,检测路由是否需要有缓存,有则返回缓存内容(\Common\Behavior\ReadRequestCacheBehavior
)
缓存更新:
行为ajax_return
/view_filter
时,更换请求的缓存内容(\Common\Behavior\WriteRequestCacheBehavior
)
使用指南
1、开启配置app/Application/Common/config.php
// 请求缓存
'REQUEST_CACHE_ON' => true, // 开启静态缓存
'REQUEST_CACHE_TIME' => 30*60, // 全局静态缓存有效期(秒)
// 定义静态缓存规则 ['路由规则' => ['expire'=> 10, 'subscribe'=>['路由1','路由2']]],
'REQUEST_CACHE_RULES' => array(
'content/index/test' => [
'expire' => 10000,
'subscribe' => [ // 依赖test2/test3路由,当test2/test3缓存更新一次后,本路由也需要重新更新缓存
'Content/Index/test2',
'Content/Index/test3',
]
],
'Content/Index/test2' => [
'expire' => 30,
'subscribe' => []
],
'content/index/test3' => [
'expire' => 30,
'subscribe' => ['Content/Index/test2']
],
'content/index/index' => [], // 最简单配置,默认 全局静态缓存有效期,不依赖其他路由
),
定义静态缓存规则
- 路由规则:遵循
module/controller/action
- expire:过期时间
- subscribe: 依赖配置。当依赖的路由缓存失效或更新后,此路由也需要重新更新缓存
2、Controller 必须继承自 Cms.class.php
或其子类
// 正确
class MyController extends Base {}
class MyController extends AdminBase {}
// 错误
class MyController extends Controller {}
最佳实践
- 开发调试时,不建议开启缓存
- 把缓存的驱动改为redis,提升响应速度
- 不建议一个路由同时处理GET/POST,否则缓存会异常,请保持一个路由一种请求方法
启示
保存缓存内容时,我们采用serialize而非json
serialize 优点
- 体积更小
- 序列化和反序列化性能更优,如下图
参考链接:https://medium.com/@moinuddinchowdhury/serialize-vs-json-67fe872a7755
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论