2010-06-24 69 views
1

我有一个Django 1.1 Apache2服务器正在运行。在通过iPad/iPhone/Safari/Chrome访问时返回“陈旧”数据的固定URL有一个JSON获取请求,但始终与Firefox保持一致。陈旧的JSON从我的Apache/Django服务器上的Chrome/Safari获取数据,但Firefox永远不会陈旧?

通过陈旧的数据,我的意思是说,作为数据的JSON代表的变化,破碎的请求不会得到更新,他们的反应缓存达15分钟左右。 Firefox总是触发最新的数据,但Safaria/Chrome(iPad/iPhone)最多需要15分钟才能从该JSON请求中获取更新的数据(它们正在返回缓存版本)。

我可以验证Apache是​​否正在在access.log中,无论使用哪种浏览器,每个请求都有一个条目,但视图的Django/Python代码每次只能被Firefox请求调用。如果请求来自Safari/Chrome/iPad/iPhone,那么Django代码每15分钟左右只会被调用一次,并且数据正在被缓存。

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

回答

0

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