Problem
How to use Distributed Cache Tag Helper in ASP.NET Core MVC.
Solution
In an empty project, update Startup
class to add services and middleware for MVC and Distributed Cache:
public void ConfigureServices(
IServiceCollection services)
{
services.AddDistributedRedisCache(options =>
{
options.Configuration = "...";
});
services.AddMvc();
}
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env)
{
app.UseMvcWithDefaultRoute();
}
Add a controller:
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
Add a _ViewImports.cshtml page in Views folder. Add directive to import tag helpers:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Add a razor page (Index.cshtml):
<p>
Current Time: @DateTime.Now.ToString("hh:mm:ss")
</p>
<p>
<distributed-cache name="fiver-one"
expires-after="@TimeSpan.FromMinutes(1)">
Cached Time: @DateTime.Now.ToString("hh:mm:ss")
</distributed-cache>
</p>
Run the sample, keep refreshing and you’ll notice that Cached Time doesn’t refresh (until cache expires):
Discussion
Cache and Distributed Cache Tag Helper help improve performance of your application by caching view’s content, either in-memory or in a distributed cache (e.g. Redis).
Distributed Cache Tag Helper uses IDistributedCache
to store contents in a distributed cache. To learn more about distributed caching, please refer to an earlier post here.
Attributes
Cache Tag Helper has the following attributes:
Expires-…
Expiry related attributes control length of time cache is valid for. You could specify an absolute or sliding date/time.
Vary-by-…
You could invalidate the cache if HTTP header, query string, routing data, cookie value or custom values.