【问题标题】:How does NSURLRequestReturnCacheDataElseLoad work in iOS?NSURLRequestReturnCacheDataElseLoad 在 iOS 中是如何工作的?
【发布时间】:2014-03-07 14:52:59
【问题描述】:

在我的应用程序中,我正在使用 Webview 并加载从网络服务器获取的数据。在这方面它工作正常,但问题是我使用 NSURLRequest 对象向服务器发送请求。我在下面写了代码

NSMutableURLRequest * webPageRequest=[NSMutableURLRequest requestWithURL:webPageUrl cachePolicy:2 timeoutInterval:60.0];

此处数据已成功缓存在内存中。但问题是,当我打开应用程序时,它总是提供旧数据。它没有向服务器发送新数据请求,甚至应用程序数据也没有更新。我同时支持IOS6和IOS7。

所以请告诉我如何解决这个问题。我可以知道数据在缓存内存中可用多长时间。以及 NSURLRequestReturnCacheDataElseLoad 将如何工作意味着该方法将在什么情况下执行。

【问题讨论】:

    标签: ios iphone objective-c uiwebview nsurlrequest


    【解决方案1】:

    你可以看到旧数据的问题是因为 NSURLRequestReturnCacheDataElseLoad,看到这个(它取自 NSHister:

    NSURLRequestReturnCacheDataElseLoad:现有的缓存数据应该是 使用,无论其年龄或到期日期。如果没有 请求对应的缓存中已有数据,数据为 从原始来源加载。

    查看此link,您应该会找到为您的目的使用正确政策的方法。

    【讨论】:

    • 嗨,格雷格,感谢您的大力支持。所以基于链接中的解释。我总是从缓存中获取旧数据。我可以知道获取旧数据是否有任何超时。所以根据我的要求是这个 NSURLRequestReloadRevalidatingCacheData: 策略适合我吗?
    • 您必须阅读所有政策并选择最适合您的政策。通过这种方式对缓存过期进行一些研究,您可以设置让我们说 1 小时过期,您的缓存将仅保留一小时。
    • 对于 POST 是否会从缓存中加载?它发生在我身上
    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 2011-10-03
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    相关资源
    最近更新 更多