Большое количество токенов замедляет все

8

У кого-нибудь из вас была проблема со слишком большим количеством токенов? Из-за наличия нескольких типов контента (~ 8) с кучей полей (~ 5-10 каждый) модуль Token генерирует слишком большую таблицу с токенами замены. Вот почему мне пришлось увеличить доступную память в settings.php, чтобы избежать drupal из-за ошибки php. Я установил 512M, чтобы он теперь генерировал выходную таблицу, но он настолько медленный, что зависает Chrome.

Это происходит там, где у меня есть предварительный просмотр доступных токенов. Так что его можно найти в Pathauto или Custom Breadcrumbs.

Вот как это выглядит в Google Chrome HTML Preview:

Скриншот

ВТК
источник
Вот как это выглядит в предварительном просмотре HTML- кода Chrome: img687.imageshack.us/img687/589/zrzutekranu20110916o153.png ... несколько модулей, несколько типов контента, несколько полей ... и это увеличивает итоговый размер вывода.
wtk
Хорошо, я нашел виновника. Это было из-за модуля Token Entity (он генерирует токены для вещей, которые обычно недоступны).
маск
Я должен был бы, и если бы не глупое правило, что, будучи новым зарегистрированным пользователем, я не смог бы сделать это так быстро:] Теперь я опубликую решение.
маск

Ответы:

6

Вы можете найти некоторые решения для такой проблемы по ссылкам на узлы + Entity Tokens создает HUGE Token Tree UI table HTML .

Использование модуля настройки Token также помогает. Я пытался, и это отлично работает.

Предоставляет настройки для токенов (в основном для улучшения производительности)

  • Отключить типы токенов или определенные токены.
  • Измените ограничение глубины по умолчанию для пользовательского интерфейса дерева токенов.
ВТК
источник
1

У меня сработали токены , но если у вас есть общее презрение к добавлению дополнительных модулей, вы можете попробовать патчи в Prevent recursive tokens .

Вы также можете изменить TOKEN_MAX_DEPTHв token.module. Для меня изменение значения 1привело к времени загрузки 1 секунды. 2сделал это 5,23 секунды. 3или больше в значительной степени разбился браузер. В этом случае вы все равно, вероятно, захотите сделать исправление изменений и / или сохранить резервную копию token.moduleфайла, или сделать Hacked частью процесса обновления вашего модуля.

CDMO
источник
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'))); 
  }
}
oknate
источник