What you should be doing is setting the cache-control header for responses you send to the client. That way, the client knows whether or not they need to go over the wire to get the data they want. You may also, if you think it prudent, use a server-side cache to save your server the database hit/object construction.
Jersey will let you set the cache-control header programmatically in ResponseBuilder.
If requests come from different clients, it's the server's responsibility to handle caching.
As far as the counter, I'm not sure what that has to do with statelessness. The REST architecture encourages that requests and responses be stateless. That doesn't prevent a server-side counter from incrementing, and it doesn't mean that nothing on the server will change. It just means that the server isn't tracking state from one request to the next.