【问题标题】:CakePHP 2 pagination cacheCakePHP 2 分页缓存
【发布时间】:2016-02-25 08:23:27
【问题描述】:

问题在于products 表中有许多记录,每个客户都有自己的产品价格 (product_prices)。

产品由客户管理分页排序每页显示

我根据http://www.jotlab.com/2010/pagination-caching-with-cakephp编写了自己的自定义分页

但是当客户端更改 ordering按页面显示 时,它是新创建的缓存,而这种缓存的想法并不好。

我正在寻找缓存多种价格产品的最佳解决方案。

【问题讨论】:

    标签: cakephp caching pagination


    【解决方案1】:

    您可以在每页缓存产品,然后手动分配分页设置:

    $products_all_count = ???// you must count all products that match your conditions
    $curr_page = (!empty($this->request->query('page')))? (int)$this->request->query('page') : 1;
    $products_cache_key = 'product_' $products_all_count . '_page_' . $curr_page;
    $products = Cache::read($products_cache_key);
    
    $products_sett = array();
    $products_sett['page'] = $curr_page;            
    $products_sett['limit'] = 100; // defined limit per page
    
    
    if (!$products) {
    
     // all conditions, settings etc.
     $products = $this->Paginator->paginate('Product');
     Cache::write($products_cache_key, $products);
    
    } elseif (is_array($products)) {
    
     $this->request->params['paging'] = array(
        'Product' => array(
            'current' =>  $products_sett['limit'] * $products_sett['page'],
            'count' => $products_all_count,
            'prevPage' => (($products_sett['limit'] * $products_sett['page']) <= $products_sett['limit'])? false : true,
            'nextPage' => (($products_sett['limit'] * $products_sett['page']) >= $products_all_count)? false : true,
            'pageCount' => ceil($products_all_count / $products_sett['limit']),
            'limit' => $products_sett['limit'] ,
            'page' => $products_sett['page'],
            'options' => array()
        )
     );
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多