使用 Flask-Cache 缓存给Flask提速
2017-09-17 20:52
267 查看
Django里面可以很方便的应用缓存,那Flask里面没准备这么周全怎么办?自己造轮子么?不用的,前人种树后人乘凉,我们有Flask-Cache,用起来和Django里面一样方便哦!
在config.py里面,设置simple缓存类型,也可以用第三方的redis之类的,和Django一样,装好redis改下设置就行
在app/init.py里面
执行一遍,看看有没有print输出,就可以看到缓存是否生效
CACHE_DEFAULT_TIMEOUT 或者装饰器加参数timeout=50。
第二种方法就是主动删除,比如@cache.cached(timeout=300,key_prefix=’index’)设置好了缓存,删除的时候用cache.delete(‘index’)即可
就像上面如果没设置key的话,默认的key_prefix=’view/%s’,这个%s就是请求的路径request.path,所以如果用@cache.cached(timeout=300)建立缓存就可以用
cache.delete(‘view//’)来清除缓存了,请求路径有的函数没有,最好设置key来搞
还有一种清除所有缓存的cache.clear()
1.安装
pip install Flask-Cache
2.配置
以我的zhihu项目(源码)为例:在config.py里面,设置simple缓存类型,也可以用第三方的redis之类的,和Django一样,装好redis改下设置就行
class Config: #省略 CACHE_TYPE = 'simple'
在app/init.py里面
from flask_cache import Cache #缓存 cache = Cache() def create_app(config_name): app = Flask(__name__) #此处省略若干字 cache.init_app(app) #工厂函数返回创建的程序示例 return app
3.应用
在views.py里面from .. import db, cache from . import main from ..decorators import admin_required, permission_required @main.route('/', methods=['GET','POST']) @cache.cached(timeout=300,key_prefix='index')#设置一个key_prefix来作为标记,然后,在内容更新的函数里面调用cache.delete('index')来删除缓存来保证用户访问到的内容是最新的 def index(): print("命令行里显示我就是调用这个函数了没走缓存,不显示我就是直接走缓存没吊用函数") # 省略 return render_template('index4.html', form=form, posts=posts,show_followed=show_followed, pagination=pagination)
执行一遍,看看有没有print输出,就可以看到缓存是否生效
4.清除缓存
第一种方法就是设置过期时间自动清除,可以在 Flask 的config里面加上配置项:CACHE_DEFAULT_TIMEOUT 或者装饰器加参数timeout=50。
第二种方法就是主动删除,比如@cache.cached(timeout=300,key_prefix=’index’)设置好了缓存,删除的时候用cache.delete(‘index’)即可
@main.route('/askquestion', methods=['GET','POST']) @login_required def askquestion(): #提问题写入数据库操作省略 cache.delete('index')#删除缓存 return render_template('askquestion.html', form=form, posts=posts,show_followed=show_followed, pagination=pagination)
就像上面如果没设置key的话,默认的key_prefix=’view/%s’,这个%s就是请求的路径request.path,所以如果用@cache.cached(timeout=300)建立缓存就可以用
cache.delete(‘view//’)来清除缓存了,请求路径有的函数没有,最好设置key来搞
还有一种清除所有缓存的cache.clear()
相关文章推荐
- 用 Flask 来写个轻博客 (27) — 使用 Flask-Cache 实现网页缓存加速
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- ASP.NET基础教程-服务器缓存会话Cache对象的使用
- ASimpleCache缓存框架之简单使用
- 【Java/Android性能优 4】PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强
- 8 -- 深入使用Spring -- 5...3 使用@CacheEvict清除缓存
- 【http】使用浏览器Cache和http状态码304实现的客户端缓存
- 合理使用缓存减少对服务器的访问之Cache-Control
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用
- 在作缓存时使用SqlCacheDependency
- hibernate缓存:Hibernate获取数据方式和缓存Cache使用
- Spring缓存注解@Cache,@CachePut , @CacheEvict,@CacheConfig使用
- 缓存(Cache)使用用法
- 使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法
- 使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法
- @Cacheable注解在spring3中的使用-实现缓存
- [转]使用Rack::Cache进行平滑的HTTP缓存
- 在 Spring 3.1 中使用 @Cacheable 实现缓存
- 关于缓存中Cookie,Session,Cache的使用