Python 禁用挂架中的浏览器缓存
我有一个action/json,它从服务器返回json 不幸的是,在IE中,浏览器喜欢缓存这个json 如何才能使此操作不缓存?这是一个常见的问题——IE在客户端缓存所有ajax/json请求。其他浏览器则不然 要解决这个问题,请生成一个随机数,并将其作为变量附加到请求url中。这使我误以为这是一个新的要求 下面是一个javascript示例,您可以在Python中执行类似的操作:Python 禁用挂架中的浏览器缓存,python,internet-explorer,caching,pylons,Python,Internet Explorer,Caching,Pylons,我有一个action/json,它从服务器返回json 不幸的是,在IE中,浏览器喜欢缓存这个json 如何才能使此操作不缓存?这是一个常见的问题——IE在客户端缓存所有ajax/json请求。其他浏览器则不然 要解决这个问题,请生成一个随机数,并将其作为变量附加到请求url中。这使我误以为这是一个新的要求 下面是一个javascript示例,您可以在Python中执行类似的操作: function rand() { return Math.floor(Math.random()*100
function rand() {
return Math.floor(Math.random()*100000);
}
$("#content").load("/posts/view/1?rand="+rand());
确保您的回复没有告诉浏览器内容将在将来过期。此控件有两个HTTP头
304 Not Modified
,并且不在响应中包含内容。“Conditionatl GET请求”包括此版本控制信息。您的服务器可能会在不应该的时候给出304个响应
有两组标头控制重新验证:
有各种工具可以查看服务器将哪些HTTP头发送回浏览器。一个是Firefox扩展。另一个推荐的工具是。我自己没有尝试过这个,但它不取决于您使用的浏览器。确保您的响应标题具有:
Cache-Control: no-cache
Pragma: no-cache
Expires=-1
jQuery库有非常好的ajax函数和控制它们的设置。其中一个称为“缓存”,它会自动向查询中添加一个随机数,从而强制浏览器不缓存页面。这可以与参数“dataType”一起设置,该参数可以设置为“json”,以使ajax请求获得json数据。我一直在我的代码中使用它,并且在IE上没有问题
希望这能有所帮助我也喜欢这种方法,这也是我目前正在做的,但我更喜欢让标头告诉IE不要缓存我没有意识到可以为json请求设置不缓存标头。如果你能做到的话,这绝对是一个更好的解决方案。你肯定不是说“过期”后有一个等号吧?