As far as I can tell, the result of a GET like http://ws.geonames.org/findNearestAddressJSON?lat=37&lng=-122 is not allowed to be cached by http proxies. If the response indicated that it was cachable, then a standard http cache (e.g. squid) would be able to accelerate my app and take some load off your servers. As it stands, I have to write a custom cache to get the same effect.
Please consider setting an expiration time on your http results. I think it would have a big benefit for very little work.
All geonames web services set a no-cache header deliberatly and it is not planed to change this. The reduction of request would be minimal at the other hand there would be issues with stale caches.