最近在开发过程中遇到这样一个问题:
webView1中加载了一个H5,webView2中加载了同样的一个H5,该H5是一个搜索页面,通过Local storage来持久化搜索记录,但是在webView1搜索的记录并没有及时同步到webView2中。
这个问题的关键就在于WKProcessPool。
WKProcessPool是用于配置进程池的,它与网页视图的资源共享有关。WKProcessPool这个类中没有暴露任何的属性和方法,如下图所示:
配置为同一个进程池的webView之间可以共享数据(例如cookie、localStorage等)。
每一个webView都会有自己的一个web内容进程,这些进程会被放进config配置的processPool中,处于同一个processPool中的web内容进程之间会共享。但是processPool中的进程会有限制,一旦达到该限制,processPool中的web内容进程之间将会停止共享。
所以我将WKProcessPool设置成了单例:
代码语言:javascript复制class FXProcessPool: WKProcessPool {
static let sharedPool = FXProcessPool()
private override init() {
super.init()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
这样的话,我应用程序中的各个webView间的localStorage就会共享了。
以上