【问题标题】:Cache for WKWebViewWKWebView 的缓存
【发布时间】:2015-06-16 10:22:44
【问题描述】:

我的自定义 Internet 浏览器出现问题。我正在使用 WKWebView。我的应用程序中有标签。如果我单击 WKWebView 中的新 NSURLRequest 选项卡。我需要实现一个缓存。如果用户按下选项卡,我更愿意加载缓存数据而不是新数据。不幸的是,这段代码不起作用:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:0.0];
[self.webView loadRequest:request];

你能指导我如何为 WKWebView 实现缓存吗?

【问题讨论】:

    标签: ios iphone nsurlrequest wkwebview


    【解决方案1】:

    如果您使用NSURLRequestUseProtocolCachePolicy,这是默认设置,您应该不需要做任何其他事情。该策略将自动查看来自服务器的响应,以决定它是否应该真正去再次抓取数据。

    如果服务器使用 Cache-Control HTTP 标头并为其响应设置了最大年龄,NSURLSession 将遵守这一点并在缓存响应过期之前返回它们。

    【讨论】:

    • 想知道在没有互联网连接时这是否可行。这就是 UIWebView 发生的事情。不确定 WKWebView。
    【解决方案2】:

    如果我有互联网连接,我通常会从服务器加载。否则,我从缓存中加载。

     if reachability.isReachable {
                 urlRequestCache=NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 10)
            }
            else {
                urlRequestCache = NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReturnCacheDataElseLoad, timeoutInterval: 60)
            }
           theWebView.loadRequest(urlRequestCache)
    

    【讨论】:

    • 这对 WKWebView 不起作用,如此处所述,forums.developer.apple.com/thread/53573
    • @guoc - 前年我自己尝试过,它在 wkwebview 中运行良好
    • @DuraiAmuthan.H 您是否尝试过使用 WKWebView 并关闭互联网连接?
    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多