搜尋

首頁  >  問答  >  主體

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頁的內容。
請問怎麼破?

怪我咯怪我咯2753 天前537

全部回覆(5)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:06:24

    這是tp3.2吧,長時間不用都忘了怎麼用了,題主可以這樣:

    • 取得頁碼

    • 查看頁碼對應的快取是否存在(快取key可以這樣寫:'content_page_' . $page

    • 緩存存在就回傳

    • 快取不存在則執行資料庫查詢並快取一份,下次請求進來的時候就直接走快取了

    我覺得主要問題在於快取的key值上。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:06:24

    s的key加上分頁標示

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:06:24

    輸出sql語句調試,先看sql執行的是什麼再去找問題

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:06:24

    你這裡的:->cache($get_code.'visitdata',60)
    中的$get_code.'visitdata'在分頁情況下是相同的,所以,不會更新。
    你把頁碼包涵到這個key裡去應該就可以了。

    回覆
    0
  • 怪我咯

    怪我咯2017-05-16 13:06:24

    雷雷

    回覆
    0
  • 取消回覆