自从升级到iOS 6以来,我们看到Safari的Web视图可以使用缓存$.ajax
调用。这是在PhoneGap应用程序的上下文中,因此它使用的是Safari WebView。我们的$.ajax
调用是POST
方法,并且我们将缓存设置为false {cache:false}
,但这仍然在发生。我们尝试将a手动添加TimeStamp
到标题中,但没有帮助。
我们进行了更多研究,发现Safari仅返回具有静态功能签名且不会随调用而变化的Web服务的缓存结果。例如,假设有一个类似以下内容的函数:
getNewRecordID(intRecordType)
此函数一遍又一遍地接收相同的输入参数,但是每次返回的数据都应该不同。
一定要赶紧Apple加快iOS 6的速度,他们对缓存设置太满意了。有人在iOS 6上看到过这种行为吗?如果是这样,到底是什么原因造成的?
我们发现的解决方法是将函数签名修改为如下所示:
getNewRecordID(intRecordType, strTimestamp)
然后也总是传入一个TimeStamp
参数,只是在服务器端丢弃该值。这可以解决此问题。希望这对其他像我一样在这个问题上花费15个小时的可怜人有所帮助!
我建议一种变通办法将函数签名修改为如下形式:
getNewRecordID(intRecordType,strTimestamp),然后也总是传入一个TimeStamp参数,而只是在服务器端丢弃该值。这可以解决此问题。