2012-08-15 21 views
6

Bazı CBS desteği sağlaması gereken bir JavaFX 2.x uygulaması geliştiriyoruz. GoogleMaps'i gömülü bir WebView aracılığıyla kullanarak en hızlı seçenek olduğu sonucuna vardık. Bununla ilgili sorun, uygulamamız her başladığı zaman, ilgili JavaScript kitaplıklarının indirilmesidir. Bu, WebView panelinde etkileşimli bir şey yapmadan önce birkaç saniye sürdüğü için gelişimi çok zor hale getirir.JavaFX Web Görünümünde Önbelleğe Alma

Akla gelen ilk şey, kütüphaneleri depolamak ve gerektiğinde yerel olarak okumak için web tarayıcıları gibi bir çeşit önbelleğe sahip olmaktır. Bu, WebView ile nasıl başarılabilir? Olgumuzda önbelleğe almanın alternatifleri var mı?

Thanx.

cevap

8

WebView bileşeni, web kaynaklarının önbelleğe alınmasını sağlamaz. Ancak, ağ iletişimi için java.net yığınını kullanır. Bunun anlamı, bir önbellekle konuşan ve bu önbellekten kaynak sağlayan kendi URL İşleyicinizi yükleyebilirsiniz. Örneğin, JavaFX fırlatma çağrısı önce main() yönteminde bu blokta gibi bir şey koymak:

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; 
    } 
}); 

Tabii şeytan ayrıntıda gizlidir. , önbellekteki bir kaynağı saklarken HTTP üstbilgileri tarafından döndürülen (ETags gibi) önbellek ilkelerini dikkate almalısınız. Başka bir değerlendirme ise HTML meta etiketleridir. Here, önbelleğe alma konusunda iyi bir kaynaktır.

Ayrıca bu önbellek yönetim sistemini tamamlamak için bir çerez yönetim sistemi düşünmek de isteyebilirsiniz.

İlgili konular