繁体   English   中英

WKWebView:是否可以预加载多个 URL?

[英]WKWebView: Is it possible to preload multiple URLs?

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

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

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

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

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

使用 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 {
    }

对象-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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM