如果应用运行很慢,可以尝试引入一些缓存,缓存的工作是什么呢?
比如有一个需要一段时间才能完成的函数,但是这个函数的返回结果可能在5分钟之内都是足够有效的,因此可以将这个结果放在缓存中一段时间,而不用反复计算 flask本身不提供缓存,但是作为flask基础的werzeug库,提供了一些基础的缓存支持,支持多种缓存后端,通常选择是memcached服务器
配置缓存
类似于建立一个flask对象一样,创建一个缓存对象,然后将对象保持存在, 如果使用的是开发服务器,可以创建一个simplecache对象,这个对象将元素缓存在python解释器控制的内存中
from werkzeug.contrib.cache import SimpleCache
cache = SimpleCache()
如果希望使用memcached进行缓存,确保已经安装了memcache模块支持,并且拥有一个可用的memcached服务器正在运行 可以连接到缓存服务器
from werkzeug.contrib.cache import MemcachedCache
cache = MemcachedCache(['127.0.0.1:11211'])
如果使用app engine,可以通过代码连接到app engine的缓存服务器
from werkzeug.contrib.cache import GAEMemcachedCache
cache = GAEMemcachedCache()
使用缓存
有两个非常重要的函数可以用来使用缓存,get()和set(), 从缓存中读取项目,使用的是get(), 如果缓存中存在对应的项目,将会返回,否则函数将会返回None
rv = cache.get('my-item')
在缓存中添加项目,使用set()函数,第一个参数是想要设定的键,第二个参数是想要缓存的值 可以设定一个超时时间,当时间超过时候,缓存系统将会自动清除这个项目
def get_my_item():
rv = cache.get('my-item')
if rv is None:
rv = calculate_value()
cache.set('my-item', rv, timeout=5 * 60)
return rv