- 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