CakePHP中的requestAction性能

时间:2012-06-10 16:14:46

标签: php cakephp cakephp-2.0

在CakePHP的每个文档中都写到requestAction会降低CakePHP的性能。始终建议使用控制器操作并使用视图文件获取结果。但有时我真的需要requestAction。

CakePHP book

  

如果在没有缓存的情况下使用requestAction可能会导致性能不佳。它   很少适合在控制器或模型中使用。

哪些进程使reuqestAction降低性能。

应该怎么做,以防止requestAction的性能损失? 添加这样的东西?

$this->autoRender = false
控制器动作,

function beforeFilter() {
  if ( $this->params['action'] == "myaction" ) { return; }
}

到控制器类

3 个答案:

答案 0 :(得分:1)

基本上,requestAction()会通过额外的页面请求来执行您的操作。此外,requestAction()以不同方式处理url,因为它将返回除string之外的数据。因此,在控制器中,您需要首先检查返回请求的类型。

这是一篇关于requestAction()

的好文章

答案 1 :(得分:1)

您可以先查看how it is written

当我读到它时,每次它会重新解析URL(在Router::normalize()中),创建新的CakeRequest实例(always loads configuration),然后尝试{{ 3}}

P.S。 ..这是一个巨大的混乱,我甚至不知道在哪个地方使用缓存..如果有的话。

答案 2 :(得分:1)

(经过1。5年的CakePHP经验)我可以说,如果有requestAction,则存在重构需求。在最初的几个月里,我添加了太多的requestActions。在获得requestAction降低性能的信息后,我没有再添加。

几个月过后,我几乎从代码中删除了每个requestAction。在一个大代码存储库中,我们只有3-4个requestActions,它们每天只会被击中一次。如果使用requestAction,则缺少从控制器层到视图层的有价值信息。请重新考虑使用情况。