We have a similar issue where we have a large block of data that displays on a dashboard. It can be accessed by 1..N clients and involves some complex queries and therefore we don't want to be re-running it each time the request is made. The solution is to cache on the server side. There are several ways to tackle this. I would start by abstracting your service with an interface (should be doing this already) and then having the interface also receive a cache interface, ICache. You can make it simple, for example, perhaps you construct it with a factory like this: ICache cache = CacheFactory.RetrieveCache(TimeSpan lifespan); This gives you flexibility for how long it is cached. Then, you might use the ASP.NET Web Cache - take a look here for some exhaustive examples/solutions: Exploring Caching in ASP.NET[^] Another option is to use the Singleton pattern and create a static class with a "lastcached" date and the parsed file. Basically, you expose a method "getparsedfile" and the method checks the lastcached. If it was cached less than you interval, it will simply return the cached object, otherwise it locks the object, updates the date and then re-parses the file. Hope that makes sense!
Jeremy Likness Latest Article: Hierarchal Data Templates in Silverlight Blog: http://csharperimage.jeremylikness.com/