Drupal 7 cssおよびjs圧縮をパフォーマンス部分でオンにすると、ファイルが集約されすぎます(5 cssファイルおよび5jsファイル)。なぜですか?
ページ:
drupalより多くのファイルを集約させる方法はありますか?
いいえ、そうではありません。これを実行する必要はありません。
Drupalは、CSSファイルをグループに集約して、さまざまな「メディア」と「ブラウザ」の値だけでなく、表示されているさまざまなページのさまざまなCSSセットを簡単にロードできるようにします。それらを再生成する必要があります。
_$groups
_のdrupal_group_css()
によって生成された_includes/common.inc
_変数を調べると、各グループ間で値の組み合わせが異なる5つのキーがあります:type
、_every_page
_、media
、preprocess
およびbrowsers
。
これにより、グループを再生成せずに(または不要なCSSを含めて)、異なるページに異なる状況で異なるグループをロードできます。これは、集約されたCSSファイルが1つしか存在しない場合に当てはまります。
Advanced CSS/JS Aggregation contribモジュール、特にBundlerサブモジュールを確認することをお勧めします。
バンドラーサブモジュールは、必要な処理を実行できる場合があります。さらに、JSを圧縮することもできます。
Simple Aggregation contribモジュールも確認してください。
幸運を。
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;
}
}