WebViewコンポーネントでは、Webリソースをすぐにキャッシングできません。ただし、ネットワーク通信用にjava.netスタックを使用します。つまり、キャッシュと通信し、そのキャッシュからリソースを処理する独自のURLハンドラをインストールできます。例えば、JavaFXの起動呼び出しの前に、あなたのmain()
方法では、このブロックのようなものを置く:
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のメタタグです。 Hereはキャッシングに適したリソースです。
また、このキャッシュ管理システムを補完するCookie管理システムを検討することもできます。