我正在使用自定义框架。
当我设计我的网站时,我将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)
然后用缩小的内容做我想做的事情?
我看到的一个有用的东西是它能否重写路径?
答案 0 :(得分:1)
嗯,这可能取决于你如何组合样式表。我不确定您的框架如何组合CSS文件(按名称,按文件夹或手动),但浏览器(我不知道IE)会逐字地解释每一行,即使它是多余的:
#foo
{
color: red;
color: green;
color: blue; /* This one will be the actual color of #foo */
}
所有这些都被执行,所以要解释的最后一个是渲染的。如果您在不同的样式表中重新定义样式(我通常使用globals.css
,header.css
和body.css
),最后一个样式将生效,这可能会使您的网站看起来很时髦。
我认为这个概念适用于JavaScript,但我还没有遇到函数重新定义。