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ヘッダー(ETagなど)によって返されるキャッシュポリシーを考慮に入れる必要があります。もう1つの考慮事項は、HTMLメタタグです。 これがキャッシングに関する優れたリソースです。
このキャッシュ管理システムを補完するCookie管理システムを検討することもできます。