Ну, это была непростая цепочка функций, которой нужно следовать, но я думаю, что у меня есть ...
Каждый раз, когда страница «обновляется» (т.е. создается с нуля, а не из кеша)) все CSS-файлы, добавленные с помощью drupal_add_css()
во время этой компоновки страницы, агрегируются и сохраняются в один файл, который возвращается как тег <link>
для этой страницы.
Следующая строка в drupal_add_css()
определяет, чтоИмя агрегированного CSS-файла будет:
$filename = 'css_'. md5(serialize($types) . $query_string) .'.css';
$types
, в этом контексте это массив всех CSS-файлов, добавленных с использованием drupal_add_css()
во время текущей сборки страницы.Имя файла для агрегированного CSS содержит сериализованную строку $types
, что, по сути, означает, что любая другая страница, которая добавляет те же файлы CSS, что и эта, получит точно такое же имя файла и, следовательно, загрузит тот же файл CSS.
Таким образом, в основном, функция агрегации запускается для каждой сборки страницы, поэтому каждый CSS, добавленный на эту страницу, будет агрегироваться каждый раз.Если на некоторых страницах используются одни и те же модули, им автоматически будет предоставлен тот же файл CSS, что и в приведенном выше фрагменте PHP.Когда вы комбинируете это с кэшированием страниц, вы получаете результаты, которые вы найдете в источнике HTML на разных страницах.
Надеюсь, что это имеет смысл!