自从升级到 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
参数,然后在服务器端丢弃该值。这可以解决这个问题。