使用PHP压缩和缓存CSS
发布时间:2020-12-13 13:22:14 所属栏目:PHP教程 来源:网络整理
导读:我目前正在尝试为我的CSS文件实现压缩方法.我基本上复制的方式与我的JS文件相同,但它不起作用.我查看了Firebug工具,但没有加载CSS. 如何调用css.php然后调用压缩的CSS文件? 使用JS工作代码,文件是scripts.php(我没有指定.js扩展名): script type="text/jav
我目前正在尝试为我的CSS文件实现压缩方法.我基本上复制的方式与我的JS文件相同,但它不起作用.我查看了Firebug工具,但没有加载CSS.
如何调用css.php然后调用压缩的CSS文件? 使用JS工作代码,文件是scripts.php(我没有指定.js扩展名): <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 GMT",$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"; } } } ?>
您缺少< link>中的rel =“stylesheet”属性标签.除此之外,代码看起来还不错.
您可能还希望查看问题并回答here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |