CakePHP模型加载需要一段时间

时间:2011-12-24 14:40:23

标签: php cakephp optimization cakephp-appmodel

为什么App::import('*', '*');以及模型加载需要~3-5ms?

当你有大约100个页面所需的模型时,这非常烦人;加载核心和模型只需要或多或少300毫秒。

此外,我发现在启用缓存系统时,此加载时间不会减少。

您是否知道为什么这么长时间以及为了需要更多模型的应用程序减少这个时间?

提前致谢!

编辑:当我使用文件缓存系统(白名调试模式为0)时,我看到文件的创建日期属性缓存生成的内容始终与上次生成页面时相同。这意味着缓存每次都会重新生成模型文件(尽管调试模式设置为0)。这是正常的吗?

EDIT2 :当我使用Notepad ++打开模型缓存文件时,在开头有一些尾随的“nul”标志,我没有在其他缓存文件中(如 persistent )。

EDIT3 长话短说:如果没有此缓存系统,缓存系统启用时,为什么模型的加载时间会长?

2 个答案:

答案 0 :(得分:1)

真的,我看到了Tag,User,Question,Comment,Advertisement和一些自定义查找查询。 (这一页)。在这种情况下,不需要喜欢或共享或那些属性作为模型。如果你得到那么精细,那么你必须期望减轻加载问题。

如果您需要在一个页面中使用30个模型,那么您正在做一些不合逻辑的事情,或者您的用例远远超出常规。

答案 1 :(得分:0)

需要注意的事项:

应用程序:import('','')正在加载所有内容 - 因此单独占用资源。如果您有一个包含30多个模型查询的页面 - 首先通过他们的关系获取数据。不要使用$ this-> loadModel()或$ uses数组;这不是CakePHP的设计方式。在这里检查我的回答是否有更好的做法:

cakephp: how to access another model, which has no association

然后你可以进一步限制所提取的数据(这会提高速度):

How to limit the fields of the associated models using find method

Re:Cache - 在CakePHP书中阅读它,因为它列出了一些很好的例子。如果您正在努力,可能需要切换到MemCache或其他专用系统而不是CakePHP平面文件。