陈旧的JSON从我的Apache / Django服务器上的Chrome / Safari获取数据,但Firefox永远不会陈旧?

时间:2010-06-24 20:18:29

标签: django apache apache2

我正在运行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分钟左右才会被调用一次,并且数据正在被缓存。

我的目标是关闭任何浏览器正在进行的任何缓存,以便数据始终是最新的。

1 个答案:

答案 0 :(得分:0)

问题是Django的缓存中间件。我打开了匿名网页的默认本地内存缓存,之前一直是静态页面。但是这个JSON API(由于iPad / iPhone的使用)是匿名的,但随着时间的推移会发生非静态数据的变化。我不知道为什么FF会触发刷新而其他人没有刷新。禁用匿名页面上的缓存可以解决问题。