我的应用工作非常慢。我正在使用Cakephp 2.3.1版本。在需要它们的函数中加载模型,组件和助手是否有益?现在我在课堂上打电话给他们。例如:
class PanelsController extends AppController {
public $name = 'Panel';
public $uses = array(list of models goes here);
public $components = array(list of components goes here);
.................
}
您建议使用其他哪些技巧。感谢
答案 0 :(得分:7)
我会检查网站是否表现缓慢
速度优化
蛋糕实践
蛋糕约定是您最好的指导方针,该框架旨在根据其惯例进行扩展。
Recursion和Containable,默认情况下,Cake会在触发查询时获取所有相关数据。递归级别和可包含行为都可以限制检索的数据量。如果cake默认提取所有相关数据并不意味着你必须保持这种状态。
保持数据库规范化。这将允许您推迟许多进程。例如。在检索帖子时,cake会自动获取所有相关数据(标签,评论)。但是当你有更高阶的规范化数据库时,你可以推迟从XHR / AJAX请求加载注释。这还允许您从评论的模型,控制器和视图提供与评论相关的逻辑。即使你为它们带来了相关的模型数据集限制。
您还可以使用计数器缓存来删除相关数据的计数器查询需求。 More Details here
您也可以手动缓存查询结果,
Cache::write($this->Post->find("all"));
尝试一下,你应该能够体验惊人的速度提升。
最后,我确实认为应用程序的体系结构在性能方面起着重要作用。有时,我们必须将某些逻辑与请求生命周期分开以提高性能。
答案 1 :(得分:4)
public $uses()
并不重要。你可以添加任意多个。如果需要某个地方,蛋糕只会延迟它们。
只需确保您的AppModel中默认为recursive = -1
,并且只提高它或包含您真正需要的数据。
但是您的组件将立即加载并初始化。 您可能希望减少这些。
但这两个属性不能成为你的瓶颈。你必须有其他一些严重的问题。
也不要在调试模式下做出假设。使用调试0测量/观察实际速度,其中不收集额外的调试信息,并且不会不断更换缓存。
编辑:请注意,我上面的话只是从“速度的角度”来看。速度无关紧要。但是,如果您能够通过关系和关系链来达到这些模型,则不建议在$ uses中添加模型。
所以,假设你想制作一个仪表板。在大多数情况下,您只需要添加“用户”模型,因为配置文件,图像和其他模型通常可以通过$this->User->Profile->foo($bar)
等直接访问。
答案 2 :(得分:0)
您可以在cakephp中使用缓存技术来缩短时间,文档请参见此处:http://book.cakephp.org/2.0/en/core-libraries/caching.html
不要使用load Model,使用大数据代码会产生问题。
这是一篇供您参考的文章:(加快cakephp app的提示) http://www.dereuromark.de/2012/02/13/what-really-speeds-up-your-cakephp-app/
答案 3 :(得分:0)
找出答案的最佳方法似乎是安装XDEBUG
1
并检查分析信息