Search code examples
google-app-enginegwtcachingbrowserrestlet

After hitting the server, browser still uses a cached version


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 !


Solution

  • 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