¿Es posible compartir un caching entre WKWebViews?

Estoy desarrollando una aplicación de iOS híbrida en torno a WKWebView . Cuando el usuario toca un enlace, la request es secuestrada y se presiona un nuevo controller de vista en la stack de navigation. El nuevo controller crea una nueva WKWebView y carga la request existente. Esto permitió que la aplicación se "sintiera" nativa pero que el contenido se visualiza en la web.

Mediante el uso de las herramientas de debugging de Safari me he dado count de que no hay activos almacenados en caching entre las vistas web. Sin embargo, si vuelvo a solicitar algo en una vista web existente, todos los JavaScripts y CSS están marcados como "en caching".

Entonces, ¿es posible compartir el caching entre WKWebView instancias de WKWebView ? Ya comparten el mismo WKProcessPool para compartir cookies .

WKWebView tiene mucho que ponerse al día. Si ya ha implementado un WKProcessPool compartido, puede intentar search y almacenar manualmente las cookies.

Prueba esto:

  func webView( _ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void ) { assert( self.webView == webView ) decisionHandler( .allow ) guard let httpResponse = navigationResponse.response as? HTTPURLResponse else { return } guard let url = httpResponse.url else { return } let cookies = HTTPCookie.cookies( withResponseHeaderFields: httpResponse.allHeaderFields as! [String : String], for: url ) let _ = cookies.map{ HTTPCookieStorage.shanetworking.setCookie( $0 ) } } 

Obviamente, puede decidir permitir o rechazar, eso es solo un ejemplo. WKWebView actualmente no comparte cookies en la location estándar de almacenamiento compartido de cookies como hace UIWebView. Esto debería resolver eso para la mayoría de los casos.