当前位置:  开发笔记 > 编程语言 > 正文

禁用Flask中的缓存

如何解决《禁用Flask中的缓存》经验,为你挑选了2个好方法。

我有一些缓存问题.我正在运行非常小的Web应用程序,它读取一帧,将其保存到磁盘,然后在浏览器窗口中显示.

我知道,它可能不是最好的解决方案,但每次我保存这个相同名称的读取框架,因此任何浏览器都会缓存它.

我试图使用html元标记 - 没有成功:




另外,我试过这个(烧瓶专用):

resp.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
resp.headers["Pragma"] = "no-cache"
resp.headers["Expires"] = "0"

这是我尝试修改resp标头的方式:

r = make_response(render_template('video.html', video_info=video_info))

r.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
r.headers["Pragma"] = "no-cache"
r.headers["Expires"] = "0"

Google Chrome和Safari仍然会进行缓存.

这可能是什么问题?

先感谢您



1> drsealks..:

好,

最后它适用于此:

@app.after_request
def add_header(r):
    """
    Add headers to both force latest IE rendering engine or Chrome Frame,
    and also to cache the rendered page for 10 minutes.
    """
    r.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    r.headers["Pragma"] = "no-cache"
    r.headers["Expires"] = "0"
    r.headers['Cache-Control'] = 'public, max-age=0'
    return r

如果添加此项,则在每个请求完成后调用此函数.请看这里

我很高兴,如果有人能解释我为什么这个标题覆盖不起作用的页面处理程序?

谢谢.


请注意,您将从第二行的第一行覆盖`r.headers ["Cache-Control"]`.因此,你的响应只有``public,max-age = 0'为`Cache-Control`设置
相关:不再需要手动指定标头,而是可以通过Flask 1.0.2访问“ Response”实例的基础“ cache_control”对象,然后设置[`no_cache`](http://werkzeug.pocoo。 org / docs / 0.14 / datastructures /#werkzeug.datastructures.ResponseCacheControl.no_cache)字段更改为“ True”(以及其他相关字段)。参见/sf/ask/17360801/。

2> Ilyas..:

如果您始终遇到相同的问题,则Flask在JS和CSS文件中看不到更新,这是因为默认情况下,Flask的最大寿命值为12小时。您可以将其设置为0以解决以下问题:

app = Flask(__name__)
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0

有关详细信息,请参阅其文档。

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有