2012-10-16 47 views
-4

这是用PHP压缩多个CSS的流行片段。如何改进此代码以使用PHP组合/压缩CSS

<?php 
     header('Content-type: text/css'); 
     ob_start("compress"); 
     function compress($buffer) { 
     /* remove comments */ 
     $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); 
     /* remove tabs, spaces, newlines, etc. */ 
     $buffer = str_replace(array(" 
    ", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); 
     return $buffer; 
     } 

     /* your css files */ 
     include('master.css'); 
     include('typography.css'); 
     include('grid.css'); 
     include('print.css'); 
     include('handheld.css'); 

     ob_end_flush(); 
?> 

看着代码,我可以看到它只会压缩文件,但不会合并它们。我如何调整它以合并文件呢?

+1

“我可以看到它只会压缩文件,但不会合并它们” - 它会将它们结合起来(它不会压缩它们,它会缩小它们,而且它看起来很像就像它不会生成有用的缓存控制标题,这可能最终导致效率降低,然后加载各种文件)。 – Quentin

+0

为什么降级这个问题。它很糟糕吗?你能帮助改进这个代码吗? – Daniel

回答

1

您是否试过该代码?我很确定它也结合了它。它执行以下操作:它设置回调函数来替换注释,制表符空格和换行符。然后,它包含多个CSS文件(都经过相同的回调)。

最后,输出被刷新到浏览器。这意味着全部所有这些文件的CSS将被发送到浏览器,这意味着它将它结合起来。

+0

我没有测试代码,因为我现在不能这样做。 – Daniel

+0

我接受了你的答案。 你会做什么来改善代码? – Daniel