Drupal模块在特定页面上自动调用函数,如何找到阻止它的代码?

时间:2010-11-23 12:46:58

标签: php performance drupal drupal-6

我正在尝试加速运行多个模块的Drupal 6站点。

我正在查看特定页面上的查询,并看到该网站正在运行不需要在某些页面上运行的查询。

调查一下,似乎有些模块包含的代码基本上都是“当有人访问X页时,运行此查询以便显示其结果。”

问题是,这个网站没有使用那些数据,所以我想阻止查询运行。

但是我不太了解Drupal的钩子和菜单系统能够精确定位导致这些查询运行的代码行,所以我可以杀死它们。

任何人都知道我应该寻找什么?

3 个答案:

答案 0 :(得分:0)

在开始尝试提高性能之前,您确实需要找到性能受到影响的位置。

您需要找到花费最多时间的地方/获得的最大收益。禁用某些页面不需要的随机查询可能需要花费大量时间而不会获得任何明显的结果。

答案 1 :(得分:0)

如果您不使用这些模块,并且调用这些查询的模块不是drupal核心功能的一部分,请禁用它们。

通常您可以使用hook_alter更改其他模块挂钩。看看这里:hook_alter

您还可以尝试搜索特定权限集来执行这些查询,并删除不需要它们的角色的权限。

否则我不确定你是否可以在不改变核心(which is not recommended!!!)的情况下轻松禁用查询。

答案 2 :(得分:0)

你无法真正做到这一点。每个页面都会发生很多事情,因为没有自动加载器只加载每页需要的代码。这使Drupal的钩子系统如此强大,任何模块都可以随时调用Drupal的任何部分并进行交互。如果你想以这种方式看待它,这也是一个缺陷。但这是一个让Drupal如此灵活的权衡。

如果您想加快网站速度,请尝试使用Performance,并聚合CSS / JS,页面压缩。您可能还想添加Boost模块,以提供静态HTML页面。还有其他模块,如memcache,AuthCache和CacheRouter。这是你想要研究的内容,而不是破解核心。