Could you paste your query? Make sure you do not have a DateTime.Now in there. If you do, each query will be unique.
I don't know exactly what part to send so here is the whole method:
Ah, that's a lot of code :-)
One thing you could try is to inspect the queries that are being made to Find in Fiddler. To do this, add the following to web.config:
<system.net> <defaultProxy> <!-- fiddler --> <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false"/>
By doing this you should easily be able to see how many requests are done. If you are getting requests for every page refresh, something is wrong with the caching. You could then inspect the queries and compare the values to see what the difference is.
A customers site that I'm working on is getting error (429): Too many requests once in a while. A simple way to allways re-create the error is to hold "enterkey" on the search function. The search basicly does this: