1
我試圖緩存一個重載頁面(它有很多來自數據庫的查詢,需要30-45秒才能完全加載到查看和顯示),但目前爲止沒有運氣。CakePHP沒有緩存視圖
我所做的是在文檔中的指導下非常基本,但不知何故,它不起作用。
- 啓用
Cache.check
和CacheDispatcher
控制器啓用輔助如下
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
目錄中。
但是,在運行該頁面後,它似乎沒有被緩存,加載速度仍然非常慢。
我在這裏錯過了什麼?
我認爲這個問題是查詢而不是視圖。 CakePHP以自己的方式處理每個表(CakePHP的方式)。你有沒有檢查你的所有查詢?你是否總是得到表中的所有字段(包括視圖中不需要的無關字段)?您可以隨時在您的查詢中指定哪些字段僅在您的過程中需要或查看「'fields'=> array('Model.field1','DISTINCT Model.field2'),' – vnpnlz
如果您的頁面需要45秒才能呈現緩存不會完全解決您的問題,因爲每次緩存過期時,都會有人受到這種緩慢加載時間的影響。您應該調查改進代碼/查詢以提高性能。另外,是否有可能在使用AJAX呈現頁面後加載一些內容? – drmonkeyninja