Найкраща стратегія агрегації / мінімізації CSS та JS для D7


8

Drupal 6 має дивовижний модуль Advagg , який виконує дивовижну роботу з інтелектуального поєднання CSS та JS, але наразі немає випуску D7.

Я прагну досягти:

  • менше файлів CSS та JS (5 CSS та 5 JS файлів - це занадто багато)
  • Файли JS мають мінімізацію (в даний час ядро ​​робить це лише для CSS)

Чи існує рішення drupal 7, яке допоможе тут? Який досвід інших людей оптимізувати це?


Edit: Це питання було спочатку розміщений в 2011 році Існує в даний час дуже стабільний реліз D7 з advagg .

Відповіді:


12

Для D7 є основна бібліотека, яка має режим навчання, який агрегує на основі реальних статистичних даних про ваш сайт.

Якщо ви хочете перебити все на один гігантський агрегат, я написав статтю з деяким зразком коду:

/**
 * 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 №1034208 також пропонує трохи послабити суворі вимоги до замовлення.


Схоже, гігантська сукупність не викликає правильної поведінки, вона дійсно зробить 1 великий файл CSS / JS для сторінки, але цей файл зміниться залежно від сторінки, на якій ви перебуваєте. Це очевидно менше, ніж ідеально.
wiifm

Точно правильно, якщо на кожній сторінці завантажуються різні файли JS, то сукупність обов’язково буде різною. Ви щойно розкрили причину того, що Drupal 7 розбиває файли на функціональні групи (JS_LIBRARY, JS_DEFAULT та JS_THEME). Зі складними сайтами це часто більш ефективно, ніж один гігантський файл.
Ділан Так

1
Якщо є 3 групи, як може бути 5 файлів, завантажених у голову? Чому б ніколи більше 3? Зв’язування всього в 1 файл - це, мабуть, жахлива ідея, але як зберегти файли JS до мінімуму?
Rudie

я спробував код, який тут згадувався. Насправді це створює для мене два стислих js-файлу. Як я можу зробити його одним js-файлом?
АРУН

@DylanTack на одному з моїх веб-сайтів є проблеми із завантаженням файлів css [ drupal.stackexchange.com/questions/128649/… та адреси веб-сайту [ living.md/] Я блукав, куди поставити ваш код, і чи можу я використовувати ваш код разом із модуль прогрега?
Яма

3

AdvAgg D7 розробляється. Інші варіанти (котирування містяться на сторінках проекту):

... дозволяє мінімізувати JavaScript на сайті з uglify.js. Модуль за замовчуванням покладається на веб-сервіс (uglify.me), щоб зробити мінімізацію, тому вам не потрібно робити будь-яку попередню обробку на вашому сервері, щоб користуватися перевагами мінімізованого JavaScript.

... створений для того, щоб прискорити продуктивність на передньому кінці сайту. У цьому першому випуску модуля Speedy він надає мінімізовані версії основних файлів JavaScript, які ще не скомпоновані. Наприклад, надається мінімізована версія drupal.js, тоді як jquery.js (вже мінімізована) - ні.


AdvAgg 7.x зараз на своєму першому RC. drupal.org/project/advagg Рекомендую використовувати його
mikeytown2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.