大量令牌会减慢一切-占位符令牌


8

你们中的任何人有太多令牌的问题吗?由于几乎没有内容类型(〜8)和一堆字段(每个〜5-10),因此令牌模块生成带有替换令牌的表太大。这就是为什么我必须增加settings.php的可用内存,以避免由于php错误而导致drupal的原因。我设置了512M,所以它现在会生成输出表,但是它是如此之慢,以至于冻结了Chrome。

发生在我具有可用令牌的预览的位置。因此可以在Pathauto或Custom Breadcrumbs中找到它。

这是在Google Chrome HTML预览中的外观:

屏幕截图


这是在Chrome html预览中的外观:img687.imageshack.us/img687/589/zrzutekranu20110916o153.png ...几个模块,几个内容类型,几个字段..它乘以最终输出大小。
wtk

好吧,我找到了罪魁祸首。这是因为令牌实体模块(它为通常不可用的事物生成令牌)。
wtk

我应该并且应该(如果不是愚蠢的规则),作为新的注册用户,我不能做得那么快:]现在,我将发布解决方案。
wtk

Answers:



1

令牌调整对我有用,但是如果您不愿意添加更多模块,可以在防止递归令牌上尝试修补程序。

您也可以TOKEN_MAX_DEPTH在中更改token.module。对我来说,更改该值将1导致加载时间为1秒。 2达到了5.23秒 3或更多的东西使浏览器崩溃。在这种情况下,您可能仍想对更改进行补丁和/或保留token.module文件备份,或者将Hacked作为模块更新过程的一部分。


1

您可以token_help在Drupal 7中停止渲染。

如果您不需要给定表单上的令牌,而太多内容类型上的太多字段导致性能问题,则可以将主题功能替换为可用令牌列表,然后将其替换为指向同一页面的链接(变量设置您想要查看令牌的位置。

默认情况下,它不会呈现令牌,但是如果您要查看带有令牌的页面,则可以:

function nys_utils_theme_registry_alter(&$vars) {
  $vars['token_tree']['function'] = 'nys_utils_theme_token_tree';   
}

function nys_utils_theme_token_tree($variables) {
  if(isset($_GET['show_tokens']) && $_GET['show_tokens'] == 1) {
    return theme_token_tree($variables);
  } else {
     return l('show tokens',$_GET['q'], array('query' => array('show_tokens' => '1'))); 
  }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.