打算让用户控制缓存,但是必须得保证用户关闭浏览器后代码还能继续执行,所以一直在研究register_shutdown_function,也一直在调试这个代码和ob_start绑定函数执行的顺序,后来就在php.net上发现了一段压缩css的好代码,我7k的css被压缩成2k不到,大家可以尝试。
< ?php
ob_start("ob_gzhandler");
ob_start("compress");
header("Content-type: text/css; charset: UTF-8");
header("Cache-Control: must-revalidate");
$off = 0; # Set to a reaonable value later, say 3600 (1 hr);
$exp = "Expires: " . gmdate("D, d M Y H:i:s", time() + $off) . " GMT";
header($exp);
function compress($buffer) {
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); // remove comments
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); // remove tabs, spaces, newlines, etc.
$buffer = str_replace('{ ', '{', $buffer); // remove unnecessary spaces.
$buffer = str_replace(' }', '}', $buffer);
$buffer = str_replace('; ', ';', $buffer);
$buffer = str_replace(', ', ',', $buffer);
$buffer = str_replace(' {', '{', $buffer);
$buffer = str_replace('} ', '}', $buffer);
$buffer = str_replace(': ', ':', $buffer);
$buffer = str_replace(' ,', ',', $buffer);
$buffer = str_replace(' ;', ';', $buffer);
return $buffer;
}
require_once('style.css');
?>
将上面的文件命名为style.css.php,放置到你当前模板目录下,然后修改你的wordpress模板中的header.php将css的路径改成<link rel="stylesheet"
href="<?php bloginfo('stylesheet_directory'); ?>/style.css.php"
type="text/css" media="screen" />

哈哈哈哈哈 我一直在用 细节上有些不同
我一般都使用预先准备好的css片段 常用的class一个文件 清除浏览器默认css定义一个文件 layout一个文件 常规定义一个文件 然后个别页面也有特殊定义 反正就是若干文件 实际使用的时候就用一个页面来按照当前页面的需要把它们载入 然后这么压一下…
这样子作的坏处 就是在用户而言 每次访问页面时的exmaple.com/css是不一样的 每次都得重新载入 某种程度上 失掉了css的本意