对于我的一种内容类型,我有一个相当大的节点表单。假设它有大约100个字段。这些字段中有很多是具有无限值的文本值,因此用户使用AJAX按钮向每个字段“添加另一个项”。从视觉上看,这个表单并不那么吓人,因为我使用了Field组来保持合理。
问题:单击“添加另一项”非常慢。就像很慢。
我想这是服务器性能的问题,但后来我在Firebug中查看了它--这个请求实际上并不需要那么长时间,但是哇--客户端CPU的使用率(在Chrome、Firefox和我尝试过的其他浏览器中)达到了100%,并停留在那里长达11-12秒,然后AJAX请求就完成了。
太疯狂了。
所以现在我不确定我的选择是什么。我能以某种方式把这个表格拆开吗?工作流风格?很多人提到字段组是组织大量字段的一种方式,但这显然无助于性能的提高。
任何帮助都很感激。
发布于 2012-12-08 10:38:07
我确实有这个问题,我可以确认答案#1 -使用多步形式改进的性能,虽然它仍然是缓慢的。
问题是,当Ajax触发时,整个表单都是在后台重新生成的。如果表单很大,这似乎会对服务器CPU产生巨大的需求。
多步表单是一种改进事物的好方法,但不幸的是,它并不总是合适的--在我的例子中,客户拒绝了它,因为他们觉得用一步一步的线性方式完成表单太烦人了。他们希望能够从制表符跳到另一个标签,而不需要在两者之间存钱。
除了修复Drupal核心,使重建表单不需要20秒的最大CPU之外,我能想到的唯一解决方案是在一个高CPU托管包上尝试这个站点,例如在Amazon上。这将是我的下一步。
不太了解Drupal和Ajax,我会将其称为某种bug。我听说在Drupal 8中Ajax的性能正在得到改善,所以我非常怀疑在D7中解决这个问题会付出多大的努力。
如果我在项目开始时就知道了这一切,我可能会尝试解决方案,比如在一个选项卡式面板上组合几个节点表单--以更有创意的方式分解服务器负载。
发布于 2012-05-07 11:42:54
您可能应该使用多步表单。这几乎可以很容易地使用CTools模块套件来执行。
https://drupal.stackexchange.com/questions/27971
复制相似问题