【问题标题】:Python flask_caching, Generate Unique page Dependent on Passed CookiesPython flask_caching,根据传递的 Cookie 生成唯一页面
【发布时间】:2021-08-25 00:53:46
【问题描述】:

对于我的 Flask 应用程序,我目前有以下内容

from flask import Flask, request
from flask_caching import Cache

app = Flask(__name__)
app.config.from_mapping({'CACHE_TYPE' : 'filesystem', 'CACHE_DIR' : 'CACHED_PAGES'})
cache = Cache(app)

@app.route('/some_url', methods=['GET'])
@cache.cached(timeout=0, query_string=True)
def some_url():

如果我的应用程序返回页面的一些变体,具体取决于设置的 cookie,我如何允许缓存特定于设置的 cookie 的页面?

我假设 cache_key 或缓存文件的文件名应该在包含传递的 cookie 数据的情况下生成。

somone 可以提供一个代码示例来说明它是如何工作的吗?

【问题讨论】:

  • 听起来你在使用烧瓶缓存 link 中的 memoize 函数。在将 cookie 传递给函数之前,您需要以某种方式解析它们。
  • @PGHE 在发布问题之前我实际上已经阅读了该页面,但我不太明白它是如何完成的。有什么建议吗?

标签: python flask caching cookies


【解决方案1】:

不完全确定您要缓存的内容,但记忆化可能适用于较小的方法而不是整个视图。

from flask import Flask, request, render_template
from flask_caching import Cache

app = Flask(__name__)
app.config.from_mapping({'CACHE_TYPE' : 'filesystem', 'CACHE_DIR' : 'CACHED_PAGES'})
cache = Cache(app)

@cache.memoize(50)
def method_1(cookie_1):
   return cookie_1

@cache.memoize(50)
def method_2(cookie_2):
    return cookie_2


@app.route('/some_url', methods=['GET'])
def some_url():
    result_1 = method_1('a cookie value')
    result_2 = method_1('another cookie value')
    render_template('template.html', result_1=result_1 , result_2=result_2)

要使用 memoziation 缓存视图,您必须依赖传递给视图函数的 url 参数而不是 cookie。

【讨论】:

  • 我要试试这个
  • 基本上我希望缓存从视图生成的 html 页面,包括特定的 url 参数“/go?option=variablevalue”...我已经可以做到这一点,但我的网站也有 4 个视图选项卡用户可以选择的。选择选项卡时,稍后将Cookie设置在页面上,以后将自动返回页面的页面中的1个版本中的1个版本。 span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
相关资源
最近更新 更多