CakePhp速度优化

时间:2013-03-06 12:51:41

标签: cakephp cakephp-2.0

我的应用工作非常慢。我正在使用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);
    .................
}

您建议使用其他哪些技巧。感谢

4 个答案:

答案 0 :(得分:7)

我会检查网站是否表现缓慢

速度优化

  1. 启用caching
  2. 压缩JS和CSS。 (A nice plugin that does this
  3. A good speed optimization checklist
  4. 蛋糕实践

    1. 蛋糕约定是您最好的指导方针,该框架旨在根据其惯例进行扩展。

    2. RecursionContainable,默认情况下,Cake会在触发查询时获取所有相关数据。递归级别和可包含行为都可以限制检索的数据量。如果cake默认提取所有相关数据并不意味着你必须保持这种状态。

    3. 保持数据库规范化。这将允许您推迟许多进程。例如。在检索帖子时,cake会自动获取所有相关数据(标签,评论)。但是当你有更高阶的规范化数据库时,你可以推迟从XHR / AJAX请求加载注释。这还允许您从评论的模型,控制器和视图提供与评论相关的逻辑。即使你为它们带来了相关的模型数据集限制。

    4. 您还可以使用计数器缓存来删除相关数据的计数器查询需求。 More Details here

    5. Cache your view

    6. 您也可以手动缓存查询结果,

      Cache::write($this->Post->find("all"));
      
    7. 尝试一下,你应该能够体验惊人的速度提升。

      最后,我确实认为应用程序的体系结构在性能方面起着重要作用。有时,我们必须将某些逻辑与请求生命周期分开以提高性能。

答案 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)

CakePHP应用程序缓慢可能是由很多原因导致的,到目前为止经历过:

  • 尝试进行dns查找的mysql服务器
  • 通过反向路由呈现包含大量链接的页面
  • 记忆问题

找出答案的最佳方法似乎是安装XDEBUG 1 并检查分析信息