Migliore strategia di aggregazione / minificazione CSS e JS per D7


8

Drupal 6 ha il fantastico modulo advagg , che fa un ottimo lavoro nel raggruppare in modo intelligente CSS e JS, ma attualmente nessuna versione D7.

Quello che sto cercando di ottenere è:

  • meno file CSS e JS (5 file CSS e 5 file JS sono troppi)
  • I file JS hanno una minimizzazione (attualmente core funziona solo per CSS)

C'è una soluzione drupal 7 che ti aiuterà qui? Quali sono le esperienze altrui con l'ottimizzazione di questo?


Modifica: la domanda è stata originariamente pubblicata nel 2011. Ora c'è una versione D7 di Advagg molto stabile .

Risposte:


12

Per D7, c'è Core Library che ha una modalità di apprendimento che si aggrega in base alle statistiche del mondo reale sul tuo sito.

Se vuoi forzare brutalmente tutto in un unico aggregato, ho scritto un articolo con un codice di esempio:

/**
 * Implements hook_js_alter().
 */
function mymodule_js_alter(&$javascript) {
  uasort($javascript, 'drupal_sort_css_js');
  $i = 0;
  foreach ($javascript as $name => $script) {
    $javascript[$name]['weight'] = $i++;
    $javascript[$name]['group'] = JS_DEFAULT;
    $javascript[$name]['every_page'] = FALSE;
  }
}

/**
 * Implements hook_css_alter().
 */
function mymodule_css_alter(&$css) {
  uasort($css, 'drupal_sort_css_js');
  $i = 0;
  foreach ($css as $name => $style) {
    $css[$name]['weight'] = $i++;
    $css[$name]['group'] = CSS_DEFAULT;
    $css[$name]['every_page'] = FALSE;
  }
}

Il numero 1034208 di Drupal.org propone anche di allentare leggermente i severi requisiti di ordinazione.


L'aggregato gigante non sembra produrre il comportamento corretto, anzi farebbe 1 grande file CSS / JS per pagina, ma questo file cambierebbe a seconda della pagina in cui ci si trova. Questo è ovviamente meno che ideale.
Wiifm,

Esatto, se ogni pagina carica file JS diversi, l'aggregato sarà necessariamente diverso. Hai appena riscoperto il motivo per cui Drupal 7 divide i file in gruppi funzionali (JS_LIBRARY, JS_DEFAULT e JS_THEME). Con siti complessi questo è spesso più efficiente di un file gigante.
Dylan Tack,

1
Se ci sono 3 gruppi, come possono essere caricati 5 file nella testa? Perché non mai più di 3? Raggruppare tutto in 1 file è apparentemente un'idea orribile, ma come mantenere i file JS al minimo?
Rudie,

ho provato il codice che menzionato qui. In realtà sta creando due file js compressi per me. Come posso renderlo un file js?
ARUN,

@DylanTack uno dei miei siti web ha problemi con il caricamento dei campi CSS [ drupal.stackexchange.com/questions/128649/… e l'indirizzo del sito web [ living.md/] Stavo vagando dove mettere il tuo codice, e posso usare il tuo codice insieme a modulo advagg?
Yama,

3

AdvAgg D7 è in fase di sviluppo. Altre opzioni (le citazioni incluse provengono dalle loro pagine del progetto):

... consente la minimizzazione al volo del sito JavaScript con uglify.js. Il modulo si basa su un servizio Web (uglify.me) per impostazione predefinita per eseguire la minimizzazione, quindi non è necessario eseguire alcuna pre-elaborazione sul server per usufruire dei vantaggi di JavaScript minimizzato.

... progettato per accelerare le prestazioni del front-end in un sito. In questa prima versione del modulo Speedy fornisce versioni minimizzate dei file JavaScript principali che non sono già minimizzate. Ad esempio, viene fornita una versione ridotta di drupal.js mentre non lo è jquery.js (già minimizzato).


AdvAgg 7.x è ora al suo primo RC. drupal.org/project/advagg Consiglia di usarlo
mikeytown2
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.