一个网站通常包含多个css文件。网站越复杂,这些css文件也会越庞大,对它们进行适当的压缩,可以节约不少带宽(在访问量巨大的时候尤为明显)。
下面介绍三种使用PHP压缩css的方法。
第一种方法:
修改css的文件名,比如把 v2op.css 改成 v2op.css.php。调用的方式如下:
<link rel="stylesheet" type="text/css" media="screen" href="/v2op.css.php"/>
然后修改此v2op.css.php,在文件开头加上
<?php
if(extension_loaded('zlib')){ob_start('ob_gzhandler');}
header("Content-type: text/css");
?>
在文件最后面加上
<?php if(extension_loaded('zlib')){ob_end_flush();}?>
第二种方法:
同样是先修改css的文件名,把v2op.css 修改为 v2op.css.php。
然后在文件开头处加上下面这段代码(注意文件的编码,这里是utf-8,根据你自己的需要修改)
<?php
ob_start ("ob_gzhandler");
header ("content-type: text/css; charset: UTF-8");
header ("cache-control: must-revalidate");
$offset = 60 * 60;
$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
header ($expire);
?>
第三种方法:
新建一个php文件,例如 v2op.css.php,然后include进来你的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", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
return $buffer;
}
/* 此处修改为你自己的css路径 */
include('v2op.css');
ob_end_flush();
?>
我个人更喜欢这种方式
当然,如果您嫌麻烦,也可以使用现成的工具去优化css,比如 csstidy
第三种方法有负作用。。
因为你把Tab,空格。。都替换没了。。。会造成有些东西不能用。。
比如英文的字体名。有的字体名中间有空格。
再比如 border: 1px solid #F00;
如果把空格替换没了。。那就成 border:1pxsolid#F00; 这很显然是错误的嘛。
font-family: Verdana, “Lucida Grande”, “Lucida Sans”, sans, Hei;
border:1px solid #ccc;
这样的情况输出之后还是会保持这样。
为什么都要以php文件去调用?
为了压缩,去除空格等等
其实这个过程还可以进行更多的操作