Una grande quantità di token rallenta tutto: token segnaposto


8

qualcuno di voi ha avuto un problema con una quantità troppo grande di token? A causa della presenza di pochi tipi di contenuto (~ 8) con gruppi di campi (~ 5-10 ciascuno), il modulo token genera una tabella troppo grande con token di sostituzione. Questo è il motivo per cui ho dovuto aumentare la memoria disponibile di settings.php per evitare drupal da errore php. Ho impostato 512M in modo che ora generi la tabella di output, ma è così lento che congela Chrome.

Succede dove ho questa anteprima dei token disponibili. Quindi può essere trovato in Pathauto o Pangrattato personalizzato.

Ecco come appare nell'anteprima HTML di Google Chrome:

immagine dello schermo


ecco come si presenta nell'anteprima html di Chrome: img687.imageshack.us/img687/589/zrzutekranu20110916o153.png ... pochi moduli, pochi tipi di contenuto, pochi campi ... e moltiplica la dimensione finale dell'output.
sett

Ok, ho trovato il colpevole. Era a causa del modulo Entità token (genera token per cose che normalmente non sono disponibili).
sett

Dovrei e vorrei se non fosse una stupida regola che come nuovo utente registrato non avrei potuto farlo così in fretta:] Ora posterò la soluzione.
sett

Risposte:



1

Token Tweaks ha funzionato per me, ma se hai uno sdegno generale per l'aggiunta di più moduli puoi provare le patch in Prevent token ricorsivi .

Puoi anche cambiare TOKEN_MAX_DEPTHin token.module. Per me, cambiare il valore in ha 1portato a un tempo di caricamento di 1 secondo. 2fatto 5,23 secondi. 3o più praticamente il crash del browser. Probabilmente vorrai comunque effettuare una patch della modifica in questo caso e / o mantenere un backup del token.modulefile o rendere Hacked parte del processo di aggiornamento del modulo.


1

Puoi interrompere il token_helprendering in Drupal 7.

Se non hai bisogno di token su un determinato modulo e troppi campi su troppi tipi di contenuto causano problemi di prestazioni, puoi sostituire la funzione tema per l'elenco di token disponibili e sostituirlo con un link alla stessa pagina con un set di variabili in cui si desidera visualizzare i token.

Per impostazione predefinita, non eseguirà il rendering dei token, ma se si desidera visualizzare una pagina con i token è possibile:

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'))); 
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.