[英]CakePHP model loading take a while
为什么App::import('*', '*');
,以及模型加载需要〜3-5ms?
当你有大约100个页面所需的模型时,这非常烦人; 加载核心和模型只需要或多或少300毫秒。
此外,我看到启用缓存系统时,此加载时间不会减少。
您是否知道为什么这么长时间以及另一个减少需要大量模型的应用程序的时间?
提前致谢!
编辑 :当我使用文件缓存系统(白名调试模式为0)时,我看到缓存生成的文件的创建日期属性始终与上次生成页面时相同。 这意味着缓存每次都会重新生成模型文件(尽管调试模式设置为0)。 这是正常的吗?
EDIT2 :当我用Notepad ++打开模型缓存文件时,在开头有一些尾随的“nul”标志,我没有在其他缓存文件中(如持久性 )。
编辑3 : 长话短说 :为什么一个模型的加载时间如果一个缓存系统打开就像没有这个缓存系统一样?
真的,我看到每个标签,用户,问题,评论,广告和一些自定义查找查询。 (这一页)。 在这种情况下,不需要喜欢或共享或那些属性作为模型。 如果您获得了那么精细,那么您必须期望减轻加载问题。
如果你需要在一个页面中使用30个模型,那么你正在做一些不合逻辑的事情,或者你的用例远远超出常规。
有几点需要注意:
应用程序:import(' ',' ')正在加载所有内容 - 因此单独占用资源。 如果您有一个包含30多个模型查询的页面 - 首先通过他们的关系获取数据。 不要使用$ this-> loadModel()或$ uses数组; 这不是CakePHP的设计方式。 在这里查看我的回复更好的做法:
然后,您可以进一步限制获取的数据(这会提高速度):
Re:Cache - 在CakePHP书中阅读它,因为它列出了一些很好的例子。 如果您正在努力,可能值得切换到MemCache或其他专用系统而不是CakePHP平面文件。
优化是一项相对的任务。 您的时间和资源最好用于优化被测量的消耗最多资源的应用程序部分。 如果你的瓶颈只有3毫秒,那么我很难理解为什么你需要进行任何优化。
话虽这么说,如果你只是一个非常好奇的人,想要找到你的问题的答案,我会鼓励你坐下来自己做一些内部代码的分析,以打破导致执行时间的因素。 CakePHP邮件列表可能是了解Cake内部工作方式的另一个有用资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.