2015-09-22 2 views
1

Я пытаюсь кэшировать страницу с тяжелой загрузкой (там, где у нее много запросов из базы данных, занимает 30-45 секунд, чтобы полностью загрузиться для просмотра и отображения), но пока не повезло.CakePHP not caching view

То, что я делал, было достаточно простым, как описано в документации, но почему-то это просто не работает.

  1. Включить Cache.check и CacheDispatcher
  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.... 
    } 
    

Я также создал каталог views под app/tmp/cache а.

Однако, после запуска страницы, похоже, что она не кэшируется, скорость загрузки все еще ужасно медленная.

Что мне здесь не хватает?

+1

Я думаю, что проблема в запросе, а не вид. CakePHP обрабатывает все таблицы по-своему (путь CakePHP). Вы проверяете все ваши вопросы? Вы всегда получаете все поля в таблицах (включая ненужные поля, которые не нужны в представлении)? Вы всегда можете указать в своем запросе, какое поле необходимо только в вашем процессе или просмотреть '' fields '=> array (' Model.field1 ',' DISTINCT Model.field2 '), ' – vnpnlz

+0

Если ваша страница занимает 45 секунд, чтобы сделать кэширование не будет полностью исправлять вашу проблему, так как каждый раз, когда истекает срок действия кэша, кто-то будет поражен этим медленным временем загрузки. Вы должны исследовать улучшение кода/запросов для повышения производительности. Кроме того, можно ли загрузить некоторый контент после просмотра страницы с помощью AJAX? – drmonkeyninja

ответ

0

Я думаю, что в этом случае вы должны пойти с memcache и redis.

memcache redis