3

我的应用程序运行非常缓慢。我正在使用 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

4 回答 4

8

如果网站运行缓慢,我会检查以下内容

速度优化

  1. 启用缓存
  2. 压缩 JS 和 CSS。(一个很好的插件可以做到这一点
  3. 一个很好的速度优化清单

蛋糕做法

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

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

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

  4. 您还可以通过使用计数器缓存来放弃对相关数据的计数器查询需求。更多细节在这里

  5. 缓存您的视图

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

    Cache::write($this->Post->find("all"));
    

尝试一下,您应该能够体验到惊人的速度提升。

最后,我确实相信应用程序的架构在性能方面起着重要作用。有时,我们必须将某些逻辑从请求生命周期中分离出来以提高性能。

于 2013-03-08T07:03:11.397 回答
5

public $uses()不要紧。您可以根据需要添加任意数量。如果需要,Cake 只会延迟加载它们。只需确保您recursive = -1在 AppModel 中获得默认值,并且仅提升它或包含您真正需要的数据。

但是您的组件都将立即加载和初始化。你可能想减少这些。

不过,这两个属性不能成为您的瓶颈。你一定有其他一些严重的问题。

也不要在调试模式下做出假设。实际速度是使用调试 0 测量/观察的,其中没有收集额外的调试信息并且缓存不会不断更换。

编辑:请注意,我上面的话只是从“速度的角度”来看的。速度无关紧要。但是,如果您能够通过关系和关系链访问模型,则不建议在 $uses 中添加模型。

因此,假设您要制作仪表板。在大多数情况下,您只需要添加“用户”模型,因为 Profile、Images 和其他模型通常可以通过$this->User->Profile->foo($bar)etc直接访问。

于 2013-03-06T13:14:01.323 回答
0

cakephp 应用程序缓慢可能是由很多原因造成的,目前经历过:

  • 试图进行 dns 查找的 mysql 服务器
  • 呈现一个页面,其中包含通过反向路由组装的大量链接
  • 记忆问题

找出最好的方法似乎是安装XDEBUG1 并检查分析信息

于 2013-03-06T13:59:47.827 回答
0

您可以在 cakephp 中使用缓存技术来减少时间,有关文档,请参见此处:http ://book.cakephp.org/2.0/en/core-libraries/caching.html

不要使用加载模型,使用大数据代码会产生问题。

这里有一篇文章供您参考:(加速 cakephp 应用程序的提示) http://www.dereuromark.de/2012/02/13/what-really-speeds-up-your-cakephp-app/

于 2013-03-06T13:40:18.083 回答