Home » Flask 插件 » FLASK-CACHE源码简要分析
  • 28
  • 08月

FLASK-CACHE源码简要分析

flask-cache源码文件包含下面三个文件:

  1. __init__.py : flask-cache主要功能,提供了对用户使用的各种函数;
  2. backends.py : 对werkzeug.contrib.cache进行一些封装以及扩展,为__init__.py提供多种缓存类型;
  3. 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对外提供的内置的缓存类型: NullCacheSimpleCacheMemcachedCacheGAEMemcachedCacheRedisCacheFileSystemCacheSASLMemcachedCache

  • 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。该类最重要的两个函数:cachedmemoize,都能作为装饰器使用。cached 主要用于缓存视图函数或者非视图函数,而memoize是Memoization http://en.wikipedia.org/wiki/Memoization 的一种体现,主要用于缓存函数结果,这样多次调用的函数,只需要计算一次。

原文: http://pythonpub.com/article/1494