Drupal добавляет фантомные ссылки на таблицы стилей в мою голову

У меня есть сайт Drupal 7 Open Atrium 2, размещенный на Пантеоне. Выполняя некоторое профилирование производительности, я заглянул в Inspector, на вкладку Networks и увидел, что у меня 404, а также загрузка файла CSS, который занимал много времени. Этот файл CSS был по сути ссылкой на домен. Я не понимаю, где и почему Drupal добавляет эти "фантомные" ссылки на таблицы стилей в домен.

Кажется, где-то есть массив таблиц стилей, и Drupal берет последний пустой элемент в массиве и добавляет его как ссылку на таблицу стилей. В одном случае он дает относительную ссылку "/" + "" + случайные символы для кэширования CSS. В другом случае он добавляет пустой элемент в массиве к домену сайта mysite.pantheon.com + "" + случайные символы.

ОБНОВЛЕНИЕ: [Я проверил переменную $css через мой файл html.tpl.php (print_r($css)) и обнаружил, что там есть один из списков фантомов:

[http://mysite.gotpantheon.com/] => Array
    (
        [type] => external
        [group] => 100
        [every_page] => 1
        [weight] => 999.009
        [media] => all
        [preprocess] => 1
        [data] => http://mysite.gotpantheon.com/
        [browsers] => Array
            (
                [IE] => 1
                [!IE] => 1
            )

    )

Как я могу проверить, где этот элемент CSS добавляется? Странно, что этот "файл" CSS указан с абсолютным URL, в то время как все остальные являются относительными URL (т. Е. Module / example / style.css)

]

Вот две фантомные ссылки в моей HTML-голове:

Появляется сразу после того, как мой последний CSS-файл объявлен в моем файле с темами.info. (обратите внимание, что он находится за пределами тега "style".)

<style>
    ...
    ...
    @import url("http://my-site.gotpantheon.com/sites/all/themes/oak_intranet/css/oak_intranet.css?n5w7ml");
</style>
<link type="text/css" rel="stylesheet" href="?n5w7ml" media="all" />

Отображается случайным образом после таблицы стилей IE, которая была частью установки.

<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" href="http://mysite.gotpantheon.com/profiles/openatrium/modules/panopoly/panopoly_core/css/panopoly-fonts-ie-open-sans-bold-italic.css?n5w7ml" media="all" />
<![endif]-->
<link type="text/css" rel="stylesheet" href="http://mysite.gotpantheon.com/" media="all" />

Какое-то время я застрял на появлении символов? N5w7ml, и есть хороший ответ, почему это происходит здесь: странные символы в конце атрибутов src / href в заголовочном теге

БОЛЬШЕ ИНФОРМАЦИИ:

Вот где стили IE добавляются в panopoly_core.module. Я подумал, что, возможно, здесь будет что-то, что регистрирует дополнительный файл CSS (пустой или что-то в этом роде) и просто добавляет его к базовому URL. Не видя это все же.

/**
 * Implemenets hook_page_build().
 */
function panopoly_core_page_build(&$page) {
  // This fixes a bug that causes @font-face declarations to break in IE6-8.
  // @see http://www.smashingmagazine.com/2012/07/11/avoiding-faux-weights-styles-...
  $path = drupal_get_path('module', 'panopoly_core');
  drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
  drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans-bold.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
  drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans-italic.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
  drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans-bold-italic.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
}

ОБНОВИТЬ:

Итак, я отметил, что в моем массиве css были только две внешние таблицы стилей, одна из которых была моим экземпляром таблицы стилей фантомного домена. Я взял свой сайт на свой локальный хост и искал термин "внешний" во всех основных файлах. Хотя их было много, мне повезло, что первым был colorizer.module. В строке 54 есть drupal_add_css. Я добавил элемент 'test' => 'test' в массив и перезагрузил свой сайт. Мой фантомный CSS-файл в массиве print($css) теперь содержит этот тестовый элемент. Кроме того, это единственный. По какой-то причине css-файл любого из colorizer не добавляется, а вместо него добавляется пустая?

[http://mysite.loc:8888/] => Array
    (
        [type] => external
        [group] => 100
        [every_page] => 1
        [weight] => 999.008
        [test] => test
        [media] => all
        [preprocess] => 1
        [data] => http://mysite.loc:8888/
        [browsers] => Array
            (
                [IE] => 1
                [!IE] => 1
            )

    )

2 ответа

Решение

Первый фантом: модуль Colorizer добавлял CSS-файлы, даже если их не было. По этому вопросу было исправлено сообщение: https://drupal.org/node/2272845

Второй фантом: я прочитал здесь ( https://www.drupal.org/node/171209), что внешние CSS-файлы не попадают в файл [my-theme].info. Проверено и, конечно же, у меня была внешняя ссылка, вот так:

; CSS - General
stylesheets[all][]   = css/screen.css
stylesheets[all][]   = css/oak_intranet.css
stylesheets[all][]   = http://fonts.googleapis.com/css?family=Lato

Последняя внешняя ссылка отображалась в моем рендеринге html примерно так:

<link type="text/css" rel="stylesheet" href="&amp;n8223b" media="all" />

Мне просто нужно было удалить его, сохранить файл и очистить кэш.

Проверьте кеширование, отключите кеширование css файлов

Другие вопросы по тегам