- 28
- 08月
flask-cache源码文件包含下面三个文件:
__init__.py: flask-cache主要功能,提供了对用户使用的各种函数;backends.py: 对werkzeug.contrib.cache进行一些封装以及扩展,为__init__.py提供多种缓存类型;jinja2ext.py: jinjia2的扩展,用于缓存jinjia2模版;
jinja2ext.py
首先我们来简要剖析下flask-cache扩展jinjia2,用于缓存jinjia2模版片段。该文件提供一个类:CacheExtension,该类的父类是jinjia2.ext.Extension,在父类的基础上对parse(self, parser)进行了扩展(修改)。具体的代码需要对jinjia2有些了解,尤其是jinjia2.ext.Extension,这里不啰嗦。
backends.py
这里包含了flask-cache对外提供的内置的缓存类型: NullCache 、 SimpleCache 、 MemcachedCache 、 GAEMemcachedCache 、 RedisCache 、 FileSystemCache 、 SASLMemcachedCache。
NullCache是对werkzeug.contrib.cache中的NullCache进行简单封装;SimpleCache是对werkzeug.contrib.cache中的SimpleCache进行简单封装;MemcachedCache是对werkzeug.contrib.cache中的MemcachedCache`进行简单封装;GAEMemcachedCache是对werkzeug.contrib.cache中的GAEMemcachedCache`进行简单封装;RedisCache是对werkzeug.contrib.cache中的RedisCache`进行简单封装;FileSystemCache是对werkzeug.contrib.cache中的FileSystemCache`进行简单封装;SASLMemcachedCache是flask-cache扩展了werkzeug.contrib.cache中的基础类MemcachedCache,实现了一个值跨多个不同的key存储;
__init__.py
文件里面只包含一个类: Cache。该类最重要的两个函数:cached 和 memoize,都能作为装饰器使用。cached 主要用于缓存视图函数或者非视图函数,而memoize是Memoization http://en.wikipedia.org/wiki/Memoization 的一种体现,主要用于缓存函数结果,这样多次调用的函数,只需要计算一次。
原文: http://pythonpub.com/article/1494