web-dev-qa-db-fra.com

Meilleure stratégie d'agrégation / minification CSS et JS pour D7

Drupal 6 a le module génial advagg , qui fait un travail impressionnant de intelligemment regroupant CSS et JS, mais actuellement aucune version D7.

Ce que je cherche à réaliser, c'est:

  • moins de fichiers CSS et JS (5 fichiers CSS et 5 JS, c'est beaucoup trop)
  • Les fichiers JS ont une minification (actuellement, le noyau ne le fait que pour CSS)

Existe-t-il une solution drupal 7 qui vous aidera ici? Quelle est l'expérience des autres en matière d'optimisation?


Edit: La question a été initialement publiée en 2011. Il existe maintenant une version D7 très stable de advagg .

8
wiifm

Pour D7, il y a Core Library qui a un mode d'apprentissage qui agrège en fonction des statistiques du monde réel sur votre site.

Si vous voulez tout forcer en un seul agrégat géant, j'ai écrit un article avec un exemple de code:

/**
 * 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;
  }
}

Drupal.org numéro # 1034208 propose également d'assouplir légèrement les exigences strictes de commande.

12
Dylan Tack

AdvAgg D7 est en cours de développement. Autres options (les citations incluses proviennent de leurs pages de projet):

... permet la minification à la volée du JavaScript du site avec uglify.js. Le module s'appuie par défaut sur un service web (uglify.me) pour faire la minification donc vous n'avez pas besoin de faire de prétraitement sur votre serveur pour profiter des avantages du JavaScript minifié.

... conçu pour accélérer les performances frontales d'un site. Dans cette première version du module Speedy, il fournit des versions minifiées des fichiers JavaScript principaux qui ne sont pas déjà minifiés. Par exemple, une version minifiée de drupal.js est fournie alors que jquery.js (déjà minifié) ne l'est pas.

3
mikeytown2