I have a webmethod inside a webservice that calls another webservice to get data and fills a generic list then it returns it, what i want to do is to save the list in memory, so the next time the webmethod is invoked it does not hit the other webservice but just returns the list, i have tried but when i invoke the web method for the second time the list count shows as 0, looks like garbage collection is cleaning all. any suggestions ?
Share
Store it in the ASP.NET cache. Setting an absolute expiration of midnight should assure that you only get it once per day (unless it gets tossed from the cache due to space issues).
Note: you could also use output caching as well, but you’re limited to a sliding expiration. That is, it will be cached for a duration based on when the request occurs. It’s not clear that’s what you want. For example, what if the first request occurs at 11pm with a 24 hour duration, you wouldn’t check again until 11pm the next day. If you have data changing on a daily basis, you’re better off using the ASP.NET cache in conjunction with output caching on a shorter duration to ensure that you get the latest, daily data in a timely fashion.
Updated example based on comments.