Contents

Flask-Cache缓存动参GET请求

Contents

自定义动态参数缓存键

1

def make_cache_key():
    args = request.args
    key = request.path + '?' + urllib.parse.urlencode([
        (k, v) for k in sorted(args) for v in sorted(args.getlist(k))
    ])
    return key

复杂,好处是即使表单数据顺序打乱,在转换为cache_key时也sorted()过的,不会出现冗余cache的情况

2

def make_cache_key(*args, **kwargs):
    args = str(hash(frozenset(request.args.items())))
    key = str((request.path + args).encode('utf-8'))
    return key

使用

@cache.cached(timeout=600, key_prefix=make_cache_key)
def 路由函数
    return jsonify(status=200, msg="", data="")