A lot of this is going to depend on the instancing for the service that
you are specifying.
For example, it can be set to be a singleton (one instance for all
calls), sessionful (one instance per proxy), or per-call (one instance per
call on a proxy). These will determine how your instances are created.
That's the first thing you are going to have to figure out in order to
figure out how to cache your data, as the cache is going to have a lifetime
that is relative (and slightly dependent) on this issue.
Also, you don't ^have^ to use the HttpCache from System.Web. You can
also use the Enterprise Library Caching block, or you can just store the
data in a static variable somewhere (just make sure you synchronize access
to it, as depending on the instancing of your service and the scope of the
cache, you could have multiple threads accessing it at the same time).
- Nicholas Paldino [.NET/C# MVP]