我把一些文件放在静态目录中,这些文件通过一些后端处理保持更新。我使用url_for()
将url返回给客户端。烧瓶url_for()无缓存
但我发现,即使我从静态目录中删除旧文件并重新生成更新的文件,仍然会在客户端浏览器上显示旧文件的内容。我认为旧文件已被缓存。
有没有人知道如何为url_for()
函数设置no-cache?
在此先感谢!
我把一些文件放在静态目录中,这些文件通过一些后端处理保持更新。我使用url_for()
将url返回给客户端。烧瓶url_for()无缓存
但我发现,即使我从静态目录中删除旧文件并重新生成更新的文件,仍然会在客户端浏览器上显示旧文件的内容。我认为旧文件已被缓存。
有没有人知道如何为url_for()
函数设置no-cache?
在此先感谢!
我前一段时间写了一个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
禁用,只是因为曾经在一段时间,你有一个新版本的所有缓存真的不是很好的做法。 css和js的缓存提供了巨大的性能优势。
好的网站做的是将文件的时间戳添加到资源URL。例如,在Flask中,这是透明地执行此操作的一种方法:http://flask.pocoo.org/snippets/40/
你是正面的吗?按下键盘上的“CTRL-SHIFT-R”强制重新加载页面。 – Blender 2012-08-16 23:56:21
感谢您的回复。但我不想重新加载整个页面。我只是使用Ajax刷新页面的部分(例如,iframe) – vycon 2012-08-17 00:03:42
如果您使用的是jQuery,请禁用缓存:http://stackoverflow.com/questions/168963/stop-jquery-load-response-from-being-缓存 – Blender 2012-08-17 00:04:43