0

我在 Pantheon 上托管了 Drupal 7 Open Atrium 2 站点。在进行一些性能分析时,我查看了“网络”选项卡中的“检查器”,发现我有一个 404,并且加载了一个需要很长时间的 CSS 文件。这个 css 文件本质上是一个指向域的链接。我不明白 Drupal 将这些“幻影”样式表链接添加到域的位置或原因。

看起来,某处有一个样式表数组,Drupal 正在抓取数组中的最后一个空白项并将其添加为样式表链接。在一种情况下,它为css缓存提供了一个相对链接“/”+“”+随机字符。在另一种情况下,它将数组中的空白项附加到站点域 mysite.pantheon.com + "" + 随机字符。

更新:[我通过我的 html.tpl.php 文件 (print_r($css)) 检查了 $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 头中的两个幻像链接:

在我的主题 .info 文件中声明的最终 css 文件之后立即显示。(请注意,它在“样式”标签之外。)

<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 字符上,这里有一个很好的答案来解释为什么会发生这种情况:Head tag 中的 src/href 属性末尾的奇怪字符

更多信息:

这是在 panopoly_core.module 中添加 IE 样式的地方。我想也许这里会有一些东西正在注册一个额外的 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' 项并重新加载了我的站点。我的 print($css) 数组中的幻象 css 文件现在有该测试项。而且,它是唯一的一个。出于某种原因,没有添加着色器的 css 文件而是添加了空白?

[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
            )

    )
4

2 回答 2

0

检查缓存,禁用缓存 css 文件

于 2014-05-20T23:55:15.627 回答
0

第一个幻影: 着色器模块正在添加 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" />

我只需要删除它,保存文件并清除我的缓存。

于 2014-05-23T17:13:26.307 回答