自从升级到iOS 6之后,我们看到Safari的web视图冒昧地缓存$.ajax
打电话。这是在PhoneGap应用程序的上下文中,所以它使用的是Safari WebView。我们的$.ajax
呼叫是POST
方法,我们将缓存设置为false。{cache:false}
但这种情况仍在发生。我们尝试手动添加TimeStamp
但是没有帮助。
我们做了更多的研究,发现Safari只返回具有静态函数签名且不随调用而改变的Web服务的缓存结果。例如,想象一下一个叫做以下内容的函数:
getNewRecordID(intRecordType)
这个函数一次又一次地接收相同的输入参数,但是它返回的数据每次都应该是不同的。
肯定是在苹果急于让iOS 6快速前进,令人印象深刻的是,他们对缓存设置太满意了。还有人在iOS 6上看到过这种行为吗?如果是的话,究竟是什么原因造成了这种情况?
我们找到的解决方法是将函数签名修改为如下所示:
getNewRecordID(intRecordType, strTimestamp)
然后总是通过一个TimeStamp
参数,并在服务器端丢弃该值。围绕这一问题,这是可行的。我希望这能帮助像我一样花15个小时在这个问题上的其他可怜的人!
Safari在iOS 6上缓存$.ajax是否有结果?