2015-09-22 68 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