Domanda

Io sono l'invio di Id di oggetto avanti e indietro dal client al server attraverso il GWT meccanismo RPC.Gli id sono venuta fuori con il datastore come Long (8 byte).Credo che a tutti il mio id solo bisogno di 4 byte, ma qualcosa in modo casuale potrebbe capita che mi dà un 5 byte (o quello che è) valore.

È GWT andando a essere intelligenti su di imballaggio questi valori di alcune variabili-length encoding che vi farà risparmiare spazio sui media?Posso specificare che farlo da qualche parte?O devo scrivere il mio codice per copiare il Anela a int e guardare fuori per quelle situazioni eccezionali?

Grazie~

È stato utile?

Soluzione

Come indicato nel GWT documentazione.

lungo:JavaScript non ha a 64-bit di tipo integrale, così a lungo, richiede una particolare attenzione.Prima di GWT 1.5, tipo lungo, era semplicemente mappato l'integrale gamma di una versione a 64-bit JavaScript valore in virgola mobile, dando lungo le variabili di un intervallo effettivo inferiore al completo a 64 bit.Come di GWT 1.5, lungo primitive vengono emulati come una coppia di numeri interi a 32 bit, e lavorare in modo affidabile per l'intero a 64-bit gamma.L'Overflow viene emulato per abbinare il comportamento previsto.Ci sono un paio di avvertimenti.Pesante uso di operazioni avranno un impatto sulle prestazioni a causa sottostante di emulazione.Inoltre, lungo le primitive non possono essere utilizzate in JSNI codice perché non sono un nativo JavaScript tipo numerico.

Se il tuo id può andare bene in un numero Intero, si potrebbe essere meglio con che.In caso contrario, se stai usando un DTO, rendono l'id di un doppio, che in realtà esiste in Javascript.

Altri suggerimenti

GWT utilizza la compressione gzip per le risposte con una capacità di carico di 256 byte o superiore.Che dovrebbe funzionare bene se si dispone di un sacco di zero byte in una tua risposta.

Da RemoteServiceServlet.shouldCompressResponse:

Determina se la risposta a una dato servlet richiesta deve o dovrebbe non essere compresso GZIP.Questo metodo è solo nei casi in cui il richiedente accetta la codifica GZIP.

Questa implementazione attualmente restituisce true se la stringa di risposta del stimato lunghezza in byte è più di 256 byte.Le sottoclassi possono ignorare questa logica.

Così, il server controlla prima se il richiedente (il browser, di solito) accetta la codifica GZIP.Internamente, java.util.zip.GZIPOutputStream vedi RPCServerUtils.Sul lato client, il browser del lavoro decomprimere il formato gzip payload - dal momento che questo è fatto in codice nativo, dovrebbe essere abbastanza veloce.

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