Python / Tornado - 压缩静态文件

时间:2013-04-20 20:34:18

标签: python django templates tornado django-compressor

对于django项目,有一个名为django-compressor的强大工具。它将compress模板标记下的所有js或css文件合并到单个缓存文件中,如下所示:

{% load compress %}

{% compress css %}
<link rel="stylesheet" href="/static/css/one.css" type="text/css" charset="utf-8">
<style type="text/css">p { border:5px solid green;}</style>
<link rel="stylesheet" href="/static/css/two.css" type="text/css" charset="utf-8">
{% endcompress %}

我想知道龙卷风项目是否有这样的东西?或者也许是任何解决方案/替代解决方案?

我在github上找到了this项目,但它已不再维护了。

3 个答案:

答案 0 :(得分:7)

看看tornado_utils,它应该做你想要的。特别要看tornado_static.py

  

tornado_static是一个用于在Tornado Web中显示静态资源的模块   应用

     

它可以处理合并,压缩和赋予URL理想的重命名   适用于积极的HTTP缓存。

答案 1 :(得分:3)

到目前为止,我见过的最佳选择是 WebAssets

  

从文档中:    webassets是一个通用的,独立于依赖的库,用于管理   您的Web应用程序的资产。它可以合并和压缩你的CSS   和JavaScript文件,支持各种不同的过滤器,   并支持使用CoffeeScript或Sass等编译器。

您可以在带有龙卷风的独立模式中使用它(请参阅specific documentation)。

设置简单明了:

from webassets import Environment
static_directory = "../static"
output_directory = "/static"
my_env = Environment(static_directory, output_directory)

当然,你可以更好地定制它。其余部分在文档中进行了很好的解释。

主要功能:

  • 易于集成
  • 可以预先压缩静态文件(命令行工具)
  • 可以动态压缩静态文件
  • 支持大多数缩小/压缩库(JS,CSS)
  • 在浏览器中支持LESS / SASS编译
  • 支持在浏览器中压缩JS模板(Handlebars ...)
  • 支持CSS精灵映射器

正确配置后模板(此处为Jinja2)的示例:

# css
{% assets filters="cssmin", output="css/compiled-layout.css",
    "css/custom.css",
    "css/bootstrap-datepicker.css",
    "css/typeahead.css" %}
    <link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}">
{% endassets %}

# js
{% assets filters="jsmin", output="js/lib/compiled-libs.js",
    "js/lib/jquery-2.1.1.min.js",
    "js/lib/jquery-ui.min.js",
    "js/lib/bootstrap.min.js",
    "js/lib/bootstrap-datepicker.js",
    "js/lib/d3.min.js",
    "js/lib/typeahead.bundle.min.js",
    "js/lib/moment.min.js",
    "js/lib/handlebars-v2.0.0.js",
    "js/global.js" %}
    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}

我一直在使用与Flask捆绑的WebAssets一年没有麻烦,它非常可靠,而且维护得很好:它已存在好几年了,last commit to date was yesterday

答案 2 :(得分:2)

据我所知,在开源tornado项目中,没有标准和规范的方法在“龙卷风世界”中进行静态文件缩小和压缩。

我见过的不同选择是:

只有前两个选项是针对龙卷风的。其他工具需要与Tornado模板渲染和手动静态文件服务机制捆绑在一起。