我正在运行Django 1.1 Apache2服务器。固定URL上有一个JSON get请求,当通过iPad / iPhone / Safari / Chrome访问时返回“陈旧”数据,但始终是最新的。
通过陈旧的数据,我的意思是,由于JSON代表的数据发生了变化,破坏的请求不会得到更新,他们的响应会被缓存最多15分钟左右。 Firefox始终触发最新数据,但Safaria / Chrome(iPad / iPhone)最多需要15分钟才能从该JSON请求中获取更新的数据(他们将返回缓存版本。)
我可以验证Apache是否在access.log中为每个请求添加了一个条目,无论使用什么浏览器,但视图的Django / Python代码每次都只会调用Firefox请求。如果请求来自Safari / Chrome / iPad / iPhone,则Django代码每15分钟左右才会被调用一次,并且数据正在被缓存。
我的目标是关闭任何浏览器正在进行的任何缓存,以便数据始终是最新的。
答案 0 :(得分:0)
问题是Django的缓存中间件。我打开了匿名网页的默认本地内存缓存,之前一直是静态页面。但是这个JSON API(由于iPad / iPhone的使用)是匿名的,但随着时间的推移会发生非静态数据的变化。我不知道为什么FF会触发刷新而其他人没有刷新。禁用匿名页面上的缓存可以解决问题。