Loading...

分享一段高效的css gzip压缩代码

2007-05-18 14:44:03 发表于PHP, Wordpress 本文链接: 分享一段高效的css gzip压缩代码

打算让用户控制缓存,但是必须得保证用户关闭浏览器后代码还能继续执行,所以一直在研究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" />

该日志未加标签
发表于 2007-05-18 14:44:03 目录:PHP, Wordpress [RSS 2.0] 你可以发表评论, 或者从您的网站 trackback
  • 相关阅读
  • 已经有5位大师动手指导 拒绝低俗
    • 1楼 muzik 在2007.05.19 11:03发表评论如下: 回复

      哈哈哈哈哈 我一直在用 细节上有些不同

      我一般都使用预先准备好的css片段 常用的class一个文件 清除浏览器默认css定义一个文件 layout一个文件 常规定义一个文件 然后个别页面也有特殊定义 反正就是若干文件 实际使用的时候就用一个页面来按照当前页面的需要把它们载入 然后这么压一下…

      这样子作的坏处 就是在用户而言 每次访问页面时的exmaple.com/css是不一样的 每次都得重新载入 某种程度上 失掉了css的本意

      • 2楼 cosβ 在2007.05.20 11:55发表评论如下: 回复

        $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”;
        这里有设置时间,所以不会出现你说的每次都要载入的情况,浏览器会缓存的!

        • 3楼 muzik 在2007.05.23 00:26发表评论如下: 回复

          我说的不是你这里..

          • 4楼 cosβ 在2007.05.23 08:25发表评论如下: 回复

            了解

            • 5楼 wordpress提速方法-Yanwu博客 在2007.07.16 22:50发表评论如下: 回复

              [...] 参考这篇文章,在模板文件下建立style.css.php文件,copy这篇文章介绍的代码,然后把style.css.php中的“require_once(’style.css’);”改成 require_once(’style2.css’); [...]

              评论分页: 1
              (Required)
              (Required, not published)
              如果留言未显示无需重复留言,我将为你恢复!