Domanda

Sto cercando di capire meglio l'uso di GWT ClientBundle e nella cache.

Se ho un file di testo grande, ad esempio, che mi piacerebbe mettere a disposizione del mio cliente, posso usare

public interface MyResources extends ClientBundle {
    public static final MyResources INSTANCE =  GWT.create(MyResources.class);    
      @Source("myText.txt")
      public TextResource myText();
}
//-- then later to use the text
String text = MyResources.INSTANCE.myText().getText(); 
.

significa che il file "mytext.txt" verrebbe scaricato dal server la prima volta che il client esegue l'app, quindi il file verrà memorizzato nella cache del browser in modo che negli usi futuri dell'app, ilil file non ha bisogno di essere scaricato?

In caso affermativo, cosa succede se cambio "mytext.txt", l'app sa per ottenere la nuova versione?

Infine, se il file è effettivamente memorizzato nella cache, come è così diverso dalla memoria locale in HTML5?

Grazie.

È stato utile?

Soluzione

    .
  • Come già menzionato Daniel Kurka, le risorse possono essere integrate nel file JS (un file *.cache.*) in cui vive il resto del codice GWT compilato.
  • Inlineing non si verifica per tutte le risorse in un pacchetto client. Per esempio. Le grandi immagini non sono mai entrate, può anche essere prevenuta con @ImageOptions.preventInlining() e non si verifica per EsternalTextresources.

    Cosa è comune per entrambi i casi è che i risultati saranno in file *.cache.*, con nomi univoci che cambiano automaticamente ogni volta che il contenuto di un file di origine cambia (dovrai ricompilare l'app GWT però!)

    Consente al server di fornire questi file con Intestazioni HTTP in caching appropriate (dovrai impostarlo da solo !) Per il cliente questo significa che non solo sarà in grado di memorizzare la cache dei contenuti (che comunque, anche se tali intestazioni non sono impostati), ma può persino saltare a chiedere il server, se esiste una versione più recente.

    Il grande vantaggio dei clientbundles è che i nomi dei file cambieranno automaticamente. Il più grande svantaggio è che tu deve ricompilare la tua app GWT, quando una risorsa cambia. Se non lo vuoi, allora è meglio usare qualche altro approccio per caricare i file: puoi ancora rendere la cache del browser qualsiasi file che ti piace (impostando le intestazioni HTTP), ma allora dovrai stare attento a Dà manualmente un nuovo nome, quando il contenuto cambia.

Altri suggerimenti

È necessario utilizzare una risorsa di testo esterna se si desidera caricare su richiesta e non come parte del JavaScript compilato.

https://deveveldok.google.com/web-toolkit/DOC / Ultimo / DevGuideClientBundle # Textresource

Se i tuoi utenti hanno bisogno dell'intero file, utilizzare una risorsa di testo.Se gli utenti hanno bisogno di parti di esso, dividere questo file in file più piccoli separati: solo il file richiesto verrà caricato quando necessario.

Le risorse del testo esterno possono essere memorizzate nella cache come tutti gli altri file statici.

File che sono all'interno di un clientbundle si inseriscono nel tuo JavaScript compilato.Non saranno scaricati separatamente.Se si desidera scaricare una risorsa in un dato momento è possibile utilizzare facilmente il costruttore di richiesta per questo.

Se non vuoi scaricare immediatamente il file ma vuoi ancora in linea, è possibile utilizzare il codice diviso e inserire il pacchetto in un'altra parte della tua app.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top