web-dev-qa-db-ja.com

Drupal 7 cssおよびjs圧縮

Drupal 7 cssおよびjs圧縮をパフォーマンス部分でオンにすると、ファイルが集約されすぎます(5 cssファイルおよび5jsファイル)。なぜですか?

ページ: enter image description here

drupalより多くのファイルを集約させる方法はありますか?

6
enjoylife

いいえ、そうではありません。これを実行する必要はありません。

Drupalは、CSSファイルをグループに集約して、さまざまな「メディア」と「ブラウザ」の値だけでなく、表示されているさまざまなページのさまざまなCSSセットを簡単にロードできるようにします。それらを再生成する必要があります。

_$groups_のdrupal_group_css()によって生成された_includes/common.inc_変数を調べると、各グループ間で値の組み合わせが異なる5つのキーがあります:type、_every_page_、mediapreprocessおよびbrowsers

これにより、グループを再生成せずに(または不要なCSSを含めて)、異なるページに異なる状況で異なるグループをロードできます。これは、集約されたCSSファイルが1つしか存在しない場合に当てはまります。

5
Maciej Zgadzaj

Advanced CSS/JS Aggregation contribモジュール、特にBundlerサブモジュールを確認することをお勧めします。

バンドラーサブモジュールは、必要な処理を実行できる場合があります。さらに、JSを圧縮することもできます。

Simple Aggregation contribモジュールも確認してください。

幸運を。

1
Mario Awad

CSS/JSを変更して、すべてを1つのグループに再グループ化できます。これは、1つまたは複数のCSS/JSファイルに集約されます(CSS宣言およびJSファイル内で使用されるメディアタイプ、外部、インラインなどによって異なります)。

/**
 * Regroup all CSS files to the same GROUP name.
 * @param type $css
 */
function MYMODULE_css_alter(&$css)
{
    uasort($css, 'drupal_sort_css_js');
    $i = 0;
    foreach ($css as $name => $style) {
        $i++;
        $css[$name]['weight'] = ($style['type'] == 'external' ? $i + 100 : $i);
        $css[$name]['group'] = CSS_DEFAULT;
        $css[$name]['every_page'] = true;
    }
}

/**
 * Regroup all JS files to the same GROUP name.
 * @param type $javascript
 */
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'] = true;
    }
}
0
Mike Vranckx