2015-09-22 65 views
1

我试图缓存一个重载页面(它有很多来自数据库的查询,需要30-45秒才能完全加载到查看和显示),但目前为止没有运气。CakePHP没有缓存视图

我所做的是在文档中的指导下非常基本,但不知何故,它不起作用。

  1. 启用Cache.checkCacheDispatcher
  2. 控制器启用辅助如下

    App::uses('AcucountAppController', 'Acucount.Controller'); 
    
    class WipReportsController extends AcucountAppController 
    { 
        public $helpers = array('Cache'); 
        public $cacheAction = array(
         'view' => 3600, 
         'index' => 3600 
        ); 
    
        function isAuthorized() 
        { 
          switch($this->request->action) 
          { 
           case 'index': 
           case 'ajax': 
           case 'ajax_breakdown_detail': 
           return $this->Access->check('AcuCount'); 
           break; 
          } 
        } 
    
        // more.... 
    } 
    

我也app/tmp/cache下创建一个views目录中。

但是,在运行该页面后,它似乎没有被缓存,加载速度仍然非常慢。

我在这里错过了什么?

+1

我认为这个问题是查询而不是视图。 CakePHP以自己的方式处理每个表(CakePHP的方式)。你有没有检查你的所有查询?你是否总是得到表中的所有字段(包括视图中不需要的无关字段)?您可以随时在您的查询中指定哪些字段仅在您的过程中需要或查看“'fields'=> array('Model.field1','DISTINCT Model.field2'),' – vnpnlz

+0

如果您的页面需要45秒才能呈现缓存不会完全解决您的问题,因为每次缓存过期时,都会有人受到这种缓慢加载时间的影响。您应该调查改进代码/查询以提高性能。另外,是否有可能在使用AJAX呈现页面后加载一些内容? – drmonkeyninja

回答

0

我认为在这种情况下,你应该使用memcache和redis。

memcache redis