注:缓存jinja2模板的代码详见:flask-cache缓存的示例代码
1.缓存模板的关键代码:
模板cached_blueprint_app/templates/zen.html
定义缓存参数:
{% cache timeout %} #timeout是缓存超期时间
{% endcache %} # 缓存区域结束标记
文件cached_blueprint_app/app.py中实例一个当前应用的缓存:
app.cache = Cache(app)
2.源码解读
2.1 Cache类初始化的关键代码如下:
class Cache:
def __init__(self,app=None,with_jinja2_ext=True,config=None):
if app is not None:
self.init_app(app, config) #<1>
def init_app(self, app, config=None):
if self.with_jinja2_ext:
from .jinja2ext import CacheExtension, JINJA_CACHE_ATTR_NAME #<2>
setattr(app.jinj