2012-08-06 5 views
8

現在、私のCSSファイルの圧縮方法を実現しようとしています。私は基本的にJSファイルの場合と同じ方法でコピーしていますが、動作しません。 Firebugツールでチェックしましたが、CSSがロードされていません。CSSを使用したCSSの圧縮とキャッシュ

css.phpを呼び出すと、圧縮されたCSSファイルが呼び出されます。 JS、ファイルとコードの作業

は(私は.js拡張子を指定しなかった)scripts.phpです:

<script type="text/javascript" src="js/scripts.php?build=123&load=foo,bar"></script> 

私は私のCSSファイルのために同じことをやってみたかった:

<link href="styles/css.php?build=123&load=foo,bar/jquery-ui-1.8rc2.custom" type="text/css"> 

css.php

<?php 
error_reporting(E_ERROR); 
// see http://web.archive.org/web/20071211140719/http://www.w3.org/2005/MWI/BPWG/techs/CachingWithPhp 
// $lastModifiedDate must be a GMT Unix Timestamp 
// You can use gmmktime(...) to get such a timestamp 
// getlastmod() also provides this kind of timestamp for the last 
// modification date of the PHP file itself 

function cacheHeaders($lastModifiedDate) { 
    if ($lastModifiedDate) { 
     if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lastModifiedDate) { 
      if (php_sapi_name()=='CGI') { 
       Header("Status: 304 Not Modified"); 
      } else { 
       Header("HTTP/1.0 304 Not Modified"); 
      } 
      exit; 
     } else { 
      $gmtDate = gmdate("D, d M Y H:i:s \G\M\T",$lastModifiedDate); 
      header('Last-Modified: '.$gmtDate); 
     } 
    } 
} 

// This function uses a static variable to track the most recent 
// last modification time 
function lastModificationTime($time=0) { 
    static $last_mod ; 
    if (!isset($last_mod) || $time > $last_mod) { 
     $last_mod = $time ; 
    } 
    return $last_mod ; 
} 

lastModificationTime(filemtime(__FILE__)); 
cacheHeaders(lastModificationTime()); 
header("Content-type: text/css; charset: UTF-8"); 

ob_start ("ob_gzhandler"); 

foreach (explode(",", $_GET['load']) as $value) { 
    if (is_file("$value.css")) { 
     $real_path = mb_strtolower(realpath("$value.css")); 
     if (strpos($real_path, mb_strtolower(dirname(__FILE__))) !== false ||strpos($real_path, mb_strtolower(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR)) !== false) { 
      lastModificationTime(filemtime("$value.css")); 
      include("$value.css"); echo "\n"; 
     } 
    } 
} 
?> 

答えて

3

<link>タグのrel="stylesheet"属性がありません。それ以外は、コードは大丈夫です。

また、質問と回答hereをご覧になることもできます。

+1

ああ、うわー、そのような重要な詳細を逃した。ありがとうございました! – CodingWonders90

1

お試しminifyこのクラスは、jsとcssを圧縮してキャッシュします。

関連する問題