Yeah, I tried that and I optimized all of the queries that were being called. I got to a point where the store can't get faster, but the customer is annoyed with those 30 seconds and he hits the manual "cache refresh" like 20 times per day.
Too bad the logic for the reset cache is in that locked DLL. There is tons of things to optimize in there I am sure!
We are thinking of a load balancing solution where the servers would spread the load and in case of a cache refresh event, one server would serve the old data, while another would deal with retrieving new data and store it in his cache, then serve that cached data to the other server so he could switch the data (and not deal with the costly retrieval). The customer wouldn't notice a "downtime" then.