2010-12-09 20 views
1

this討論中發現了一個很好的程序,它將CSS文件合併爲一個,以加速並緊固CSS加載。它的工作原理,使我所有的CSS文件成爲一個小堆,但頁面顯示爲文本(網頁成爲一個CSS文件,Apache認爲)什麼可能是錯的?通過智能自動化php腳本將CSS和JAVASCRIPT結合起來

我做了什麼:我將下面的腳本保存爲一個php文件,並將其包含在我的頁面中,並將url更改爲帶有它們的css文件。 CSS加載正常,但WEBPAGE在瀏覽器中顯示爲純文本!雖然所有的CSS都在那裏,其餘的PHP生成的項目也只是瀏覽器應該加載的東西是純文本,而不是HTML網站......任何線索?

<?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", "\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(); 
?> 

此外改進可以在以後由即使提高其強度,一旦工作:

"; }">"}"(2個字符)
"{ ">"{"(1個字符)
" {">"{"(1char)
" :">":"(1個字符)
": ">":"(1個字符) " ,">","(1個字符)
", ">","(1個字符) " (">"("(1個字符)
"(">"("(1個字符) ")">")"(1個字符)
") " >")"(1個字符)

回答

3

你是如何包含該片段的?

在猜測,我想像應該是它​​自己的文件,並通過<link rel="stylesheet" type="text/css" href="./css.php" />或類似包括。如果你直接將其粘貼到index.php中,則將其輸出的MIME類型設置爲text/css(通過header()),因此是明文。

+0

......另外,就像一個側面提示:如果你對PHP非常熟悉,你可以通過將壓縮/縮小的CSS緩存到一個靜態文件來完成自己和web服務器的巨大忙碌,所以它不必分析所有的東西與每一個頁面加載。客戶端瀏覽器將緩存它很好,但CSS可能不會經常改變所有解析每個請求。或者,根據需要進行手動縮減也可以減輕服務器負擔。 – tadamson 2010-12-09 05:43:03