Drupal ob_flush() 缓慢且可变的性能


Drupal ob_flush() slow and variable performance

在使用XHProf分析Drupal站点之后。我看到 ob_flush() 调用的性能可变,每页只调用一次。

首次加载页面 x

Function   Calls  Ex Wall  Wall %
ob_flush   1      1,712ms  39.5%

第二次加载页面 x

Function   Calls  Ex Wall  Wall %
ob_flush   1      270ms    24.5%

第三次加载页面 x

Function   Calls  Ex Wall  Wall %
ob_flush   1      300ms      25.3%

在 php 中.ini设置我已经禁用了 out_buffering = 0,这似乎是对 Drupal 的建议

我看到其他查询没有提供明确的解决方案。

有没有办法提高这种性能?

看起来ob_flush功能受到Drupal引导后所有内容的严重影响。我启用了实体缓存模块,该模块将用户缓存到 APCcache 并将其余缓存缓存到数据库(无法为其他实体禁用它)。缓存意味着查询数据要么发送,要么从数据库中检索。这种减慢反映在ob_flush因为在内容未完全生成/缓存或检索之前,无法刷新内容。

禁用实体缓存模块后。现在我看到ob_flush消耗低于 300 毫秒,这仍然很高,但不像以前那样可变和非常高。