为了账号安全,请及时绑定邮箱和手机立即绑定

Safari在iOS 6上缓存$.ajax是否有结果?

Safari在iOS 6上缓存$.ajax是否有结果?

慕后森 2019-07-03 11:00:45
自从升级到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是否有结果?
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

假设您使用的是jQuery,则所有Web服务请求的解决方案都很简单:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
    // you can use originalOptions.type || options.type to restrict specific type of requests
    options.data = jQuery.param($.extend(originalOptions.data||{}, { 
      timeStamp: new Date().getTime()
    }));});

了解有关jQuery预筛选器调用的更多信息。这里.

如果您没有使用jQuery,请检查文档以查找您选择的库。它们可能具有类似的功能。


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 330 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信