css combiner的问题?

时间:2011-02-28 00:29:55

标签: php javascript css compression combinators

我正在使用自定义框架。

当我设计我的网站时,我将CSS规则分成几个文件,例如

  • typography.css
  • links.css
  • master.css
  • tables.css

现在明显的问题是它意味着几个http请求。

正如我所提到的,我正在使用自定义框架 在此框架中包含一个css文件,您只需调用

echo load::css('name');  
echo load::css('another');

将吐出

<link rel="stylesheet" type="text/css" href="http://site.com/name.css">
<link rel="stylesheet" type="text/css" href="http://site.com/another.css">

现在我想做的是打电话

load::css('name');
echo load::css('another');

你可以看到我只在最后一个上调用echo, 这将输出

<link rel="stylesheet" type="text/css" href="http://site.com/combined/0df4899f90fe7be26f4893b1a4a30eb6.css">
  

0df4899f90fe7be26f4893b1a4a30eb6 =='命名另一个'

基本上,

当你调用load:css('something')它会将名称存储在一个数组中时,它会在php脚本处理结束时返回值为md5(implode(' ', $cssArray))的链接标记,然后实际创建组合带有md5'd名称的文件(如果它不存在)。

这意味着只有一个请求服务器用于所有css内容。

任何人都可以看到这种方法的任何潜在问题吗? 我也计划为javascript文件实现这个 如果我还要实现css / js压缩器,我会遇到任何问题吗?

<小时/> Google Minify?
经过一些研究后,我遇到了谷歌缩小。

是否可以改变它,以便你可以给它一个css文件路径数组并让它吐出内容,以便我可以调用类似

的内容

$css = minify::css($cssArray) 然后用缩小的内容做我想做的事情?

我看到的一个有用的东西是它能否重写路径?

1 个答案:

答案 0 :(得分:1)

嗯,这可能取决于你如何组合样式表。我不确定您的框架如何组合CSS文件(按名称,按文件夹或手动),但浏览器(我不知道IE)会逐字地解释每一行,即使它是多余的:

#foo
{
  color: red;
  color: green;
  color: blue; /* This one will be the actual color of #foo */
}

所有这些都被执行,所以要解释的最后一个是渲染的。如果您在不同的样式表中重新定义样式(我通常使用globals.cssheader.cssbody.css),最后一个样式将生效,这可能会使您的网站看起来很时髦。

我认为这个概念适用于JavaScript,但我还没有遇到函数重新定义。