I am developing a small blog application using the following technologies:
There are more than one way to cache Web API results.
1- HTTP Caching, this is where you set the cachine to be on the HTTP level, the brwoser or the Ajax requests will cache the output of the REST calls and will not request it from the server, there are some libraries to handle such method, ex:
CacheCow.Server, see this link for more details http://www.hanselman.com/blog/NuGetPackageOfTheWeekASPNETWebAPICachingWithCacheCowAndCacheOutput.aspx
2- Output/Response Caching, It will be stored in the server memory, the request will be received by the server and the results will be returned immediately from the server memory without executing the action method, see this link for more details https://docs.asp.net/en/latest/performance/caching/response.html
3- Server Side Caching, this is the method you are using, where you cache the data, and your data should be classified as Reference[not changed], Activity[per user] and Shared [between users] data
You are using MemoryCache object to cache the results which is a good option, but I suggest you have a look at
RedisCache as it provides more capabilities and wil excel if you have a web farm as it is a distributed cache solution, https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/