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 the 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. You’ll notice that the cached time doesn’t refresh (until cache expires).
![]()
Discussion
Cache and Distributed Cache Tag Helper helps improve the 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 the content 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.
Source Code
GitHub