I am using AppEngine with Restlet to serve my data to a GWT app in the browser as client. The Restlet-GWT edition uses GWT-RPC serialization as the transport format underneath. GWT-RPC serialization relies on the shared source between client and server to serialize/deserialize.
Now, after adding a new property to one of the shared source classes, de-serialization started failing. The AppEngine server processed the request correctly with response HTTP 200 / OK and was sending out a correctly serialized object. The client choked each time.
After awhile I figured out that the browser was trying to deserialize a cached copy of my object (without the newly added property) and so de-serialization in the browswer failed.
Now the question : why is the browser using a cached copy if the server is being hit anyhow ?
IMO, this defeats the purpose/advantages of caching, the server and network resources are being consumed and the fresh result is not used ? In case the browswer decides to use a cached copy, I would expect no round-trip to the server.
thx !
Your browser is keeping the javascript compiled by GWT for you application in cache.
Easy solution, do a hard refresh of your page a couple of times (ctrl + F5, or cmd + shift + R).
If you want to prevent this, see this question