django-compressor:如何去除注释并充分压缩css

网站部署时,对css和js进行混淆压缩是一项必要的工作。对于用django开发的网站,有一个叫做django-compressor的工具可以帮助高效灵活地实施这项工作。不过该工具在默认配置下,输出的css文件并未被去除注释、换行和空格,需要手动进行设置。如何解决这个问题呢?

具体方法

很幸运,django-compressor具有良好的可配置性和可扩展性。它内置支持了很多第三方压缩工具,包括CSS Tidy、 YUI CSS and JS compressor、 yUglify CSS and JS compressor、 google的Closure Compiler、 Douglas Crockford写的python版的JSmin、YUI CSS Compressor的python版本cssmin,以及一个能把部分图片转换为data URIs的过滤器。本文只关注cssmin,它的配置最简单。

cssmin是Zachary Voase用一个python写的实现yui css compress算法的工具。django-compress提供了一个过滤器来支持该工具。使用该工具只需在项目的配置文件settings.py中添加:

COMPRESS_CSS_FILTERS = ['compressor.filters.cssmin.CSSMinFilter']

该设置会覆盖默认值['compressor.filters.css_default.CssAbsoluteFilter']。

重新运行manage.py compress,并重启服务器即可。下图是我网站中的部分css代码,显然,采用CSSMinFilter后,css已经被充分压缩,大功告成。

django-compressor采用cssmin之后输出的css

注意事项

首先,不需用去主动安装cssmin包,django-compressor已经内置其算法。

其次,COMPRESS_CSS_FILTERS的值必须是一个列表,不能写成字符串。下面的写法会报错,提示找不到类"c":

COMPRESS_CSS_FILTERS = 'compressor.filters.cssmin.CSSMinFilter'

具体错误信息是:Compressing... CommandError: An error occured during rendering XXX.html: Invalid class path 'c'。

更多参考链接

  1. django-compressor在github的地址。
  2. django-compressor在readthedocs的详细文档。
  3. cssmin详情。
用支付宝钱包扫描此二维码,为本文付款
本文标签:
csscss压缩

官方公众号:
查看更多有趣的信息,请扫码关注男儿邦官方微信公众号nanerbangblog。

公众号id:
男儿邦blog

版权声明:
本文为站长原创,如需转载,请联系作者,并以超链接形式注明出处

本文地址:
http://www.nanerbang.com/article/59/