I am using Visual Studio for Mac to do this but it will work the same in Visual Studio 2017 (for windows).
Lets create a new Asp.Net core application
Once the app is created go to the startup.cs class. and change the ConfigureServices method to this
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddMemoryCache();
}
{
services.AddMvc();
services.AddMemoryCache();
}
Now to use this we need to get access to the IMemoryCache in the controllers constructor. In the demo I will use the about page in the project created
IMemoryCache caching= null;
public HomeController(IMemoryCache cache)
{
caching = cache;
}
public HomeController(IMemoryCache cache)
{
caching = cache;
}
To use it. I am just going to cache the DateTime
public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
DateTime currentTime;
if (!caching.TryGetValue<DateTime>("currentTime", out currentTime))
{
currentTime = DateTime.Now;
caching.Set<DateTime>("currentTime", currentTime, DateTimeOffset.Now.AddMinutes(10));
}
ViewBag.Time = currentTime;
return View();
}
{
ViewData["Message"] = "Your application description page.";
DateTime currentTime;
if (!caching.TryGetValue<DateTime>("currentTime", out currentTime))
{
currentTime = DateTime.Now;
caching.Set<DateTime>("currentTime", currentTime, DateTimeOffset.Now.AddMinutes(10));
}
ViewBag.Time = currentTime;
return View();
}
To cache something use the Set method. I would recommend using the version that allow you to specify the type of object.
When setting the cache you pass in the key, what you want cached and optionally how long you want it cached. I set it to 10 minutes in this example.
Getting items from the cache you use TryGetValue it will return true if the value was found and it passes it out in an out parameter.
If you need to remove something use the cache Remove method where you pass in the key of the object you want to remove.
To show the item is cached I changed the About.cshtml to show the current date time and the cached value
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
<p>Use this area to provide additional information.</p>
@DateTime.Now
<br/>
@ViewBag.Time
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
<p>Use this area to provide additional information.</p>
@DateTime.Now
<br/>
@ViewBag.Time
Please be sure to check out my course on Packt about asp.net core to learn more about asp.net core