Any recommendations/guidelines in terms of how to deal with caching?
Currently, client-side caching is supported via the “conditions” property of Call. See the Conditions class for details. So, the first recommendation is to ensure that you correctly set all the representation metadata for your own representations (modification date, expiration date, tag). That will ensure that the server-side negotiation logic (used via the Response.setEntity(Resource, Language) method) works optimally. Then, writing a generic server-side cache is a different story. The recommendation would be to follow the REST style and HTTP specification spirit as closely as possible. For full-featured caching, you should look at popular projects like Squid: http://www.squid-cache.org/ or Apache caching modules. These caches can be installed transparently for the clients, as reverse proxies.