2012-10-16 75 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