flask_cache如何缓存动态数据,如何调用缓存数据

伪代码如何:

from flask import Flask, render_template
from flask_cache import Cache
import os

basedirs = os.path.abspath(os.path.dirname(__file__))
basedir = basedirs + '/cache'
app = Flask(__name__)
app.debug = True
cache = Cache(app, config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': basedir})


@app.route('/')
@cache.cached(timeout=50)
def index():
    #这视图里面有些数据处理,渲染给页面.具体代码就不贴了
    a= 'test'
    return render_template('index.html',a=a)

@app.route('/list/<name>')
def list():
    start = time.time()
    return render_template('index.html', start=start)

if __name__ == '__main__':
    app.run()

index已经缓存好数据了,并保存到basedir了.
我想根据比如用户1访问:
www.baidu.com/list/1 缓存下来
www.baidu.com/list/2 缓存下来

用户2来访问:
www.baidu.com/list/1 这个就直接去调用之前缓存下来的内容

阅读 7.8k
3 个回答

不明白你要缓存它的意义呢

我以前用django进行缓存过, 那是因为我的页面还是经过数据处理之后并且渲染,但是你这个没有渲染,那么缓存它干嘛

那你可以试试这样

global info = {}

html = render_template('index.html',a=a)
info['your tag'] = html
return html

然后再在另一取缓存的接口

def get():
    tag = request.get('tag')
    return info[tag]

兄弟你使用装饰器的位置有问题哦。

@app.route("/")
@cache.cached(timeout=50)
def index():
    start = time.time()
    return render_template('index.html', start=start)

先用cache装饰视图函数,再用route装饰。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题