目录搜索
基础安装ThinkPHP5.1开发规范目录结构配置基础架构路由控制器请求架构总览入口文件URL访问模块设计命名空间容器和依赖注入Facade钩子和行为路由定义变量规则路由地址闭包支持路由参数跨域请求注解路由路由分组MISS路由资源路由快捷路由路由别名路由绑定域名路由URL生成控制器定义前置操作跳转和重定向空操作和空控制器分层控制器资源控制器请求对象输入变量请求类型HTTP头信息伪静态参数绑定请求缓存响应响应输出响应参数重定向数据库模型视图连接数据库查询数据添加数据更新数据删除数据查询表达式链式操作wheretablealiasfieldstrictlimitpageordergrouphavingjoinuniondistinctlockcachecommentfetchSqlforcepartitionfailExceptionsequence聚合查询时间查询高级查询视图查询JSON字段子查询原生查询查询事件事务操作监听SQL存储过程数据集分布式数据库定义新增更新删除查询JSON数据字段获取器修改器自动时间戳只读字段软删除类型转换数据完成查询范围模型输出事件关联一对一关联一对多关联远程一对多多对多关联多态关联关联预载入关联统计关联输出视图渲染视图赋值视图过滤模板引擎模板变量输出使用函数运算符原样输出模板注释模板布局模板继承包含文件输出替换标签库内置标签循环标签比较标签条件判断资源文件加载标签嵌套原生PHP定义标签错误和日志异常处理日志处理调试验证杂项命令行扩展库安全和性能附录调试模式性能调试SQL调试变量调试远程调试验证器验证规则错误信息验证场景路由验证内置规则独立验证静态调用表单令牌缓存SessionCookie多语言分页上传自动生成目录结构创建类库文件生成类库映射文件清除缓存文件生成配置缓存文件生成数据表字段缓存生成路由映射缓存自定义指令验证码图像处理Time数据库迁移工具WorkermanMongoDb单元测试安全建议优化建议助手函数升级指导更新日志
文字

请求缓存

支持请求缓存功能,支持对GET请求设置缓存访问,并设置有效期。

请求缓存仅对GET请求有效

有两种方式可以设置请求缓存:

路由设置

可以在路由规则里面调用cache方法设置当前路由规则的请求缓存,例如:

// 定义GET请求路由规则 并设置3600秒的缓存
Route::get('new/:id','News/read')->cache(3600);

第二次访问相同的路由地址的时候,会自动获取请求缓存的数据响应输出,并发送304状态码。

默认请求缓存的标识为当前访问的pathinfo地址,可以定义请求缓存的标识,如下:

// 定义GET请求路由规则 并设置3600秒的缓存
Route::get('new/:id','News/read')->cache(
    [ 
        'new/:id/:page', 3600
    ]
);

:id、:page表示使用当前请求的param参数进行动态标识替换,也就是根据id和page变量进行3600秒的请求缓存。

如果cache参数传入false,则表示关闭当前路由的请求缓存(即使开启全局请求缓存)。

支持给一组路由设置缓存标签

// 定义GET请求路由规则 并设置3600秒的缓存
Route::get('new/:id','News/read')->cache(
    [ 
        'new/:id/:page', 3600, 'page'
    ]
)

这样可以在需要的时候统一清理缓存标签为page的请求缓存。

动态设置

可以在公共文件或者行为中动态设置请求缓存,例如:

Request::cache('blog/:id',3600);

表示对blog/:id定义的动态访问地址进行3600秒的请求缓存。

变量支持当前的请求变量(也就是param方法的所有变量)。

可以使用当前的URL地址作为缓存标识,如下:

Request::cache('__URL__',600);

支持对某个URL后缀的请求进行缓存,例如:

Request::cache('[html]',600);

表示对所有的html后缀访问(GET)请求进行10分钟的缓存。

也支持设置请求缓存标签,例如:

Request::cache('blog/:id/:page',3600, 'page');

自动缓存

可以通过开启自动缓存和全局缓存有效期设置请求缓存,支持在模块配置中单独设置开启请求缓存。

只需要在配置文件中开启:

'request_cache'	=>	true,
'request_cache_expire'	=>	3600,

就会自动根据当前请求URL地址(只针对GET请求类型)进行请求缓存,全局缓存有效期为3600秒。

全局请求缓存支持设置排除规则,使用方法如下:

  'request_cache'        => true,
    'request_cache_expire' => 3600,
    'request_cache_except' => [
        '/blog/index',
        '/user/member',
    ],

排除规则为不使用请求缓存的地址(不支持变量)开头部分(不区分大小写)。

路由中设置的请求缓存依然有效并且优先,如果需要设置特殊的请求缓存有效期就可以直接在路由中设置。


上一篇:下一篇: