Flask url_for()无缓存

4
我将一些文件放在静态目录中,并且这些文件将通过后端处理进行更新。我使用url_for()函数来返回客户端的URL。
但是我发现即使我从静态目录中删除旧文件并重新生成更新的文件,它仍然会在客户端浏览器上显示旧文件的内容。我认为旧文件已被缓存。
有谁知道如何为url_for()函数设置no-cache?
先谢谢了!

1
你确定吗?在键盘上按CTRL-SHIFT-R强制重新加载页面。 - Blender
谢谢回复。但我不想重新加载整个页面。我只是使用ajax来刷新页面的部分(例如iframe)。 - vycon
1
如果您正在使用jQuery,请禁用缓存:https://dev59.com/Y3VC5IYBdhLWcg3w1E7w - Blender
2个回答

1

我之前写过一篇博客文章关于这个问题。

基本上,你需要创建一个响应来发送,然后在响应中设置一些额外的头信息,最后发送响应:

def send_url(method):

    response = app.make_response(url_for(method))

    response.headers.add('Last-Modified', datetime.datetime.now())
    response.headers.add('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0')
    response.headers.add('Pragma', 'no-cache')

    return response

0

仅仅因为偶尔有新版本发布就禁用所有缓存并不是一个好的实践。缓存CSS和JS可以带来巨大的性能优势。

好的网站会在资源URL中添加文件的时间戳。例如,在Flask中,以下是一种透明地实现这一点的方法:http://flask.pocoo.org/snippets/40/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接