缓存Jinja2片段

用法:

  1. {% cache [timeout [,[key1, [key2, ...]]]] %}
  2. ...
  3. {% endcache %}

默认情况下“模版文件路径”+“片段开始的函数”用来作为缓存键。同样键名是可以手动设置的。键名串联成一个字符串,这样能够用于避免同样的块在不同模版被重复计算。

设置 timeout 为 None,并且使用了自定义的键:

  1. {% cache None "key" %}...

为了删除缓存值,为“del”设置超时时间:

  1. {% cache 'del' %}...

如果提供键名,你可以很容易地产生模版的片段密钥,从模板上下文外删除它:

  1. from flask.ext.cache import make_template_fragment_key
  2. key = make_template_fragment_key("key1", vary_on=["key2", "key3"])
  3. cache.delete(key)

例子:

  1. Considering we have render_form_field and render_submit macroses.
  2. {% cache 60*5 %}
  3. <form>
  4. {% render_form_field form.username %}
  5. {% render_submit %}
  6. </form>
  7. {% endcache %}