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