2012-08-16 106 views
3

我把一些文件放在静态目录中,这些文件通过一些后端处理保持更新。我使用url_for()将url返回给客户端。烧瓶url_for()无缓存

但我发现,即使我从静态目录中删除旧文件并重新生成更新的文件,仍然会在客户端浏览器上显示旧文件的内容。我认为旧文件已被缓存。

有没有人知道如何为url_for()函数设置no-cache?

在此先感谢!

+0

你是正面的吗?按下键盘上的“CTRL-SHIFT-R”强制重新加载页面。 – Blender 2012-08-16 23:56:21

+0

感谢您的回复。但我不想重新加载整个页面。我只是使用Ajax刷新页面的部分(例如,iframe) – vycon 2012-08-17 00:03:42

+1

如果您使用的是jQuery,请禁用缓存:http://stackoverflow.com/questions/168963/stop-jquery-load-response-from-being-缓存 – Blender 2012-08-17 00:04:43

回答

1

我前一段时间写了一个blog post

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

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/