WKWebViewの表示が遅いのをなんとかしたかった

WKWebViewはWebページを完全に読み込むまで白い画面になってしまう為遅く感じられいます。

なんとかしたい!

色々試した結果

色々試した結果、2つのことがわかりました。

・一度読み込んだページは2回目の読み込みが早いこと
・別の画面でLoadをしてもLoadされた状態が残ること

サンプル

FirstViewController

ViewDidLoadで事前にWeb画面をロードしておく

import UIKit
import WebKit
class ViewController: UIViewController {
    var webView:WKWebView?
    override func viewDidLoad() {
        super.viewDidLoad()
        webView = WKWebView()
        webView?.load(URLRequest(url: URL(string: "https://www.google.co.jp/")!))
    }
    @IBAction func buttonTapped(_ sender: Any) {
        let vc = WebViewController(webView: webView!)
        self.present(vc, animated: true)
    }
}

WKWebViewController

前の画面からWKWebviewを受け取り表示を行う。別タブを開くと新しくロードされてしまう為結局白い画面の時間が発生してしまう。

import UIKit
import WebKit

class WebViewController: UIViewController {
    let webView: WKWebView
    init (webView: WKWebView){
        self.webView = webView
        super.init(nibName: String(describing: WebViewController.self), bundle: nil)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView.uiDelegate = self
        webView.navigationDelegate = self
        webView.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(webView)
        constraint()
    }
    func constraint() {
        webView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0.0).isActive = true
        webView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0.0).isActive = true
        webView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0.0).isActive = true
        webView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0.0).isActive = true
    }
}

extension WebViewController: WKUIDelegate, WKNavigationDelegate {
    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration,
                 for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        return nil
    }
}

困ること、やなこと

・1遷移先のWebページで遷移する際、白背景にはならないが結局遅延が発生してしまう。

・複数ページ遷移先が決まっている際に他の画面で複数WKWebViewのインスタンスを保持しておかなければいけない。

しかし、調べた結果ではこれ以外の解決策を思いつくことができませんでした。

1番いいのは遷移先のWebページが軽いこと!!!!!