2012-08-15 16 views
6

Estamos desarrollando una aplicación JavaFX 2.x, que debe proporcionar compatibilidad con GIS. Hemos llegado a la conclusión de que el uso de GoogleMaps a través de una WebView incrustada es la opción más rápida. El problema es que cada vez que se inicia nuestra aplicación, se descargan las bibliotecas de JavaScript correspondientes. Esto hace que el desarrollo sea muy difícil ya que toma un par de segundos antes de que se pueda hacer algo interactivo en el panel de WebView.Almacenamiento en caché en JavaFX WebView

Lo primero que viene a la mente es tener algún tipo de almacenamiento en caché como los navegadores web para almacenar las bibliotecas y leerlas localmente cuando sea necesario. ¿Cómo se puede lograr esto con WebView? ¿Hay alguna alternativa al almacenamiento en caché en nuestro caso?

Gracias.

Respuesta

8

El componente WebView no proporciona el almacenamiento en caché de los recursos web de fábrica. Sin embargo, utiliza la pila java.net para las comunicaciones de red. Lo que esto significa es que puede instalar su propio controlador de URL que habla con un caché y sirve recursos de ese caché. Por ejemplo, poner algo como este bloque en su método de main() antes de la llamada de lanzamiento de 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; 
    } 
}); 

Por supuesto, el diablo está en los detalles. Usted debe tener en cuenta las políticas de caché devueltas por los encabezados HTTP (como ETags) al almacenar un recurso en su caché. Otra consideración son las metaetiquetas HTML. Here es un buen recurso en el almacenamiento en caché.

Quizás también desee considerar un sistema de gestión de cookies para complementar este sistema de gestión de caché.

Cuestiones relacionadas