gpt4 book ai didi

webview - JavaFX WebView 中的缓存

转载 作者:行者123 更新时间:2023-12-04 14:16:10 32 4
gpt4 key购买 nike

我们正在开发一个 JavaFX 2.x 应用程序,它需要提供一些 GIS 支持。我们得出的结论是,通过嵌入式 WebView 使用 GoogleMaps 是最快的选择。它的问题在于每次我们的应用程序启动时,都会下载相应的 JavaScript 库。这使得开发变得非常困难,因为在 WebView 面板上完成任何交互式操作之前需要几秒钟的时间。

首先想到的是像 Web 浏览器那样进行某种缓存,以便存储库并在需要时在本地读取它们。如何使用 WebView 实现这一点?在我们的案例中,有没有缓存的替代方案?

谢谢。

最佳答案

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 header (如 ETags )返回的缓存策略。另一个考虑因素是 HTML 元标记。 Here是一个很好的缓存资源。

您可能还需要考虑一个 cookie 管理系统来补充这个缓存管理系统。

关于webview - JavaFX WebView 中的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968471/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com