thinkphp分页数据查询时,如果设置了缓存就读不到第2页了,怎么破?

查看:76
本文介绍了thinkphp分页数据查询时,如果设置了缓存就读不到第2页了,怎么破?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

thinkphp分页数据查询时,如果设置了缓存就只显示第1页,怎么破?
即 12 >> 这个效果出来了,但是点击2,显示的还是第1页的内容。

$count=M('visitdata')->where(array('works_code'=>$get_code))->count();
$Page=new \Think\Page($count,10);
$show=$Page->show();

S($get_code.'visitdata',null);  //如果不先清空缓存,就只显示第1页……    
// 进行分页数据查询,如果这里设置了缓存,就只显示第1页 
M('visitdata')->cache($get_code.'visitdata',60)->where(array('works_code'=>$get_code))->order('visit_id')->limit($Page->firstRow.','.$Page->listRows)->select();
$cache_visitdata=S($get_code.'visitdata');

$this->assign(array(
    'code'=>$get_code,
    'visitdata'=>$cache_visitdata
)); 
$this->assign('page',$show);
$this->display();

12 >> 这个效果出来了,但是点击2,显示的还是第1页的内容。
请问怎么破?

解决方案

这是tp3.2吧,长时间不用都忘了怎么用了,题主可以这样:

  • 获取页码

  • 查看页码对应的缓存是否存在(缓存key可以这样写:'content_page_' . $page

  • 缓存存在就返回

  • 缓存不存在则执行数据库查询并缓存一份,下次请求进来的时候就直接走缓存了

我觉得主要问题在于缓存的key值上。

这篇关于thinkphp分页数据查询时,如果设置了缓存就读不到第2页了,怎么破?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆