WKWebCache缓存

我需要在WKWebview上缓存Webview URL。我可以使用以下配置做到这一点

var webViewConfiguration:WKWebViewConfiguration {
    get {
      // Create WKWebViewConfiguration instance
      let webCfg:WKWebViewConfiguration = WKWebViewConfiguration()
      // Configure the WKWebViewConfiguration instance with the WKUserContentController
      webCfg.userContentController = userContentController
      webCfg.websiteDataStore = WKWebsiteDataStore.default()
      webCfg.processpool = Processpool.shared.processpool
      return webCfg
    }
  }

,并且在加载网络视图时,我使用以下代码:

let request = URLRequest(url: self.url!,cachePolicy: .returnCacheDataElseLoad,timeoutInterval: 600)
        self.webView.load(request)

我现在面临的问题是每次启动时缓存都需要时间。也就是说,每次启动Webview都需要花费很多时间来加载,一次加载后加载速度很快。

我需要实现的是,一旦加载了Webview,它在连续加载时应加载得更快。

lj0122 回答:WKWebCache缓存

.useProtocolCachePolicy是URL加载请求的默认策略。它应该适合您的情况。

let request = URLRequest(url: self.url!,cachePolicy: .useProtocolCachePolicy,timeoutInterval: 600)
,

您可以在文档目录中保存HTML,并在启动时直接从文档目录加载页面。 要保存Webview内容,请执行以下操作:Reading HTML content from a UIWebView

要加载:

  NSString* path = [[NSBundle mainBundle] pathForResource:@"about" ofType:@"html"];
  NSURL* url = [NSURL fileURLWithPath:path];

  NSURLRequest* request = [NSURLRequest requestWithURL:url];
  [webView loadRequest:request];
,

使用默认的.useProtocolCachePolicy代替.returnCacheDataElseLoad是可以的。该策略将自动查看服务器的响应,以决定是否应实际执行并再次获取数据。在服务器端,为其响应设置Cache-Control HTTP标头的最长期限。

本文链接:https://www.f2er.com/3076019.html

大家都在问