【问题标题】:WKWebView: Is it possible to preload multiple URLs?WKWebView:是否可以预加载多个 URL?
【发布时间】:2015-07-20 21:39:41
【问题描述】:

刚刚将一个应用迁移到WKWebView,想知道是否有任何可能的方法来“预加载”多个 URL,但一次只显示一个?

我有一个包含 5 个 URL 的列表。我已经知道我会在某个时间点出现,并且我想通过预加载这些以在单个 WKWebView 中使用来加快体验。

【问题讨论】:

  • 只是想知道这些是您自己的网络数据还是通用网页(例如,用户指定)

标签: ios swift url preload wkwebview


【解决方案1】:

我最终只使用 NSURLCache 并使用 NSURLRequest 和 NSURLConnection 预加载所有 URL。然后,每当我将 url 加载到 WKWebView 中时,它都会根据我的缓存策略使用缓存的请求。

【讨论】:

  • 您能否详细介绍一下您是如何使用“加载”方法实现这一目标的? URLRequests 似乎没有缓存(可能取决于响应标头?)。
【解决方案2】:

一个相对直接的方法是创建五个NSData 对象(异步),每个对象都使用已知的 url 进行初始化。当需要显示其中一个时,可以将NSData转换为字符串,然后调用WKWebViewloadHTMLString函数来改变显示的页面。

【讨论】:

    【解决方案3】:

    您还可以预加载五个不同的 WKWebView 实例,并在需要特定 URL 时将它们换入/换出。这当然取决于您的 UI 和交互。

    【讨论】:

      【解决方案4】:

      使用 NSURLCache

      这里是代码

      斯威夫特

      // Create URLRequest
          var request: URLRequest? = nil
          if let url = URL(string: "YOUR_URL") {
              request = URLRequest(url: url)
          }
          
          // Check the cache.
          var cachedResponse: CachedURLResponse? = nil
          if let request = request {
              cachedResponse = URLCache.shared.cachedResponse(for: request)
          }
          print(cachedResponse != nil ? "Cached response found!" : "No cached response found.")
         // Load the cache
          do {
              if let request = request {
                  try NSURLConnection.sendSynchronousRequest(request, returning: nil)
              }
          } catch {
          }
      

      Obj-C

      NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"YOUR_URL"]];
      
          // Check the cache.
          NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
          NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found.");
          //Load cache
          [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];
      

      【讨论】:

        猜你喜欢
        • 2021-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        相关资源
        最近更新 更多