通过PHP压缩没有空格的CSS?

时间:2012-06-17 23:43:23

标签: php css compression

想知道如何从css-tricks.com

获取像这样的css文件

http://cdn.css-tricks.com/wp-content/themes/CSS-Tricks-9/style.css?v=9.5

不确定他是否使用php来完成此操作。我一直在读无数文章而没有运气。

此外,它是自动化的,在.css之后吐出版本号吗?一直在看它并想知道如何实现一个干净的CSS文件。

任何帮助表示赞赏!感谢。

2 个答案:

答案 0 :(得分:2)

使用带有搜索/替换的编辑器很简单,并删除所有不必要的空格。例如,当我编写CSS时,我只使用空格来分隔关键字 - 我使用换行符和制表符来清晰地格式化它。所以我可以用空字符串替换所有制表符和换行符,结果就像上面那样“缩小”了。

版本号是一种相当常见的缓存技巧。它不会影响服务器端的任何内容,但浏览器会将其视为新文件,并将其缓存。这样可以在进行更新时轻松清除所有用户的缓存。但就个人而言,我使用PHP函数自动追加"?t=".filemtime($file)(换句话说,修改文件的时间戳),这样就省去了手动更新版本号的麻烦。


以下是我用于自动将修改时间附加到JS和CSS文件的确切代码:

<?php
ob_start(function($data) {
    chdir($_SERVER['DOCUMENT_ROOT']);
    return preg_replace_callback(
        "(/(?:js|css)/.*?\.(?:js|css))",
                     // all the relevant files are in /js and /css folders of the root
        function($m) {
           if( file_exists(substr($m[0],1)))
               return $m[0]."?t=".filemtime(substr($m[0],1));
           else return $m[0];
        },
        $data
    );
});
?>

答案 1 :(得分:1)

我会避免手动操作,因为你可能会损坏你的CSS。 有很好的工具可以帮助你解决这些问题,而不会太棘手。

一个优秀的解决方案是Assetic,它是一个资产管理器,允许您使用各种工具(yuicompressor,google closure等)过滤(缩小,压缩)。

默认情况下,它与Symfony2捆绑在一起,但可以在任何PHP项目中单独使用。 我已经在Zend Framework项目中成功实现了它。