WebView 组件不提供开箱即用的 Web 资源缓存。但是,它确实利用 java.net 堆栈进行网络通信。这意味着您可以安装自己的 URL 处理程序,该处理程序与缓存通信并从该缓存中提供资源。例如,main()
在 JavaFX 启动调用之前在您的方法中放置类似以下的块:
URL.setURLStreamHandlerFactory(new URLStreamHandlerFactory() {
public URLStreamHandler createURLStreamHandler(String protocol) {
if ( "http".equals(protocol) ) {
return new URLStreamHandler() {
protected URLConnection openConnection(URL u) throws IOException {
if ( isCached(u) ) {
return new CachedStreamConnection(u);
}
return new MyURLConnection(u);
}
};
}
// Don't handle a non-http protocol, so just return null and let
// the system return the default one.
return null;
}
});
当然,魔鬼在细节中。在缓存中存储资源时,您应该考虑 HTTP 标头(如ETags )返回的缓存策略。另一个考虑因素是 HTML 元标记。 这是一个关于缓存的好资源。
您可能还想考虑一个 cookie 管理系统来补充这个缓存管理系统。