Я пытаюсь кэшировать страницу с тяжелой загрузкой (там, где у нее много запросов из базы данных, занимает 30-45 секунд, чтобы полностью загрузиться для просмотра и отображения), но пока не повезло.CakePHP not caching view
То, что я делал, было достаточно простым, как описано в документации, но почему-то это просто не работает.
- Включить
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.... }
Я также создал каталог views
под app/tmp/cache
а.
Однако, после запуска страницы, похоже, что она не кэшируется, скорость загрузки все еще ужасно медленная.
Что мне здесь не хватает?
Я думаю, что проблема в запросе, а не вид. CakePHP обрабатывает все таблицы по-своему (путь CakePHP). Вы проверяете все ваши вопросы? Вы всегда получаете все поля в таблицах (включая ненужные поля, которые не нужны в представлении)? Вы всегда можете указать в своем запросе, какое поле необходимо только в вашем процессе или просмотреть '' fields '=> array (' Model.field1 ',' DISTINCT Model.field2 '), ' – vnpnlz
Если ваша страница занимает 45 секунд, чтобы сделать кэширование не будет полностью исправлять вашу проблему, так как каждый раз, когда истекает срок действия кэша, кто-то будет поражен этим медленным временем загрузки. Вы должны исследовать улучшение кода/запросов для повышения производительности. Кроме того, можно ли загрузить некоторый контент после просмотра страницы с помощью AJAX? – drmonkeyninja