首页 > 代码库 > CakePHP 2.5 使用Redis缓存Paginator的数据
CakePHP 2.5 使用Redis缓存Paginator的数据
本身的Paginator无法缓存 , 直接修改源代码方便缓存
/lib/Cake/Controller/Component/PaginatorComponent.php 定位到196行和大约215行
/*修改一下代码源代码仅为$results = $object->find($type, array_merge($parameters, $extra));*/if(!isset($options[‘cache_config‘])){ $results = $object->find($type, array_merge($parameters, $extra));}else{ $cache_key = ‘paginator_cache_‘.$object->name.‘_page_‘.$page; $results = Cache::remember($cache_key, function() use ($object,$type,$parameters,$extra){ return $object->find($type,array_merge($parameters, $extra)); },$options[‘cache_config‘]);} //开始修改 以上代码不变 仅方便定位/*修改一下代码源代码仅为$results = $object->find($type, array_merge($parameters, $extra));*/if(!isset($options[‘cache_config‘])){ $count = $object->find(‘count‘, array_merge($parameters, $extra));}else{ $cache_key = ‘paginator_cache_‘.$object->name.‘_count‘; $count = Cache::remember($cache_key, function() use ($object,$type,$parameters,$extra){ return $object->find(‘count‘,array_merge($parameters, $extra)); },$options[‘cache_config‘]);}
使用方法:
首先修改core.php
//probability代表一个概率 查看源码后可以知道是time()%$probability ==0 时调用Cache::gc()Cache::config(‘common_paginator_cache_redis‘, array( ‘engine‘ => ‘Redis‘, ‘duration‘ => ‘+15 minutes‘, ‘probability‘ => 70));
控制器中修改:
//使用方法//加入以下代码设置cache config即可 其他代码无需更改$this->paginate = array( ‘limit‘ => 12, ‘cache_config‘=>‘common_paginator_cache_redis‘//新增 匹配core.php中的配置);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。