ASP.NET Core 开发-缓存(Caching)
2016-06-16 17:18
691 查看
ASP.NET Core 缓存Caching,.NET Core 中为我们提供了Caching 的组件。
目前Caching 组件提供了三种存储方式。
Memory
Redis
SqlServer
学习在ASP.NET Core 中使用Caching。
2.添加引用
3.使用
在Startup.cs 中 ConfigureServices
然后在
这里是简单使用,直接设置缓存。
我们还可以加上过期时间,以及移除缓存,还可以在移除时回掉方法。
过期时间支持相对和绝对。
下面是详细的各种用法。
我们直接在页面上增加distributed-cache 标签即可。
这样就能缓存标签内的内容。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
目前Caching 组件提供了三种存储方式。
Memory
Redis
SqlServer
学习在ASP.NET Core 中使用Caching。
Memory Caching
1.新建一个 ASP.NET Core 项目,选择Web 应用程序,将身份验证 改为 不进行身份验证。2.添加引用
Install-Package Microsoft.Extensions.Caching.Memory -Pre
3.使用
在Startup.cs 中 ConfigureServices
public void ConfigureServices(IServiceCollection services) { services.AddMemoryCache(); // Add framework services. services.AddMvc(); }
然后在
public class HomeController : Controller { private IMemoryCache _memoryCache; public HomeController(IMemoryCache memoryCache) { _memoryCache = memoryCache; } public IActionResult Index() { string cacheKey = "key"; string result; if (!_memoryCache.TryGetValue(cacheKey, out result)) { result = $"LineZero{DateTime.Now}"; _memoryCache.Set(cacheKey, result); } ViewBag.Cache = result; return View(); } }
这里是简单使用,直接设置缓存。
我们还可以加上过期时间,以及移除缓存,还可以在移除时回掉方法。
过期时间支持相对和绝对。
下面是详细的各种用法。
public IActionResult Index() { string cacheKey = "key"; string result; if (!_memoryCache.TryGetValue(cacheKey, out result)) { result = $"LineZero{DateTime.Now}"; _memoryCache.Set(cacheKey, result); //设置相对过期时间2分钟 _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromMinutes(2))); //设置绝对过期时间2分钟 _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(2))); //移除缓存 _memoryCache.Remove(cacheKey); //缓存优先级 (程序压力大时,会根据优先级自动回收) _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetPriority(CacheItemPriority.NeverRemove)); //缓存回调 10秒过期会回调 _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromSeconds(10)) .RegisterPostEvictionCallback((key, value, reason, substate) => { Console.WriteLine($"键{key}值{value}改变,因为{reason}"); })); //缓存回调 根据Token过期 var cts = new CancellationTokenSource(); _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .AddExpirationToken(new CancellationChangeToken(cts.Token)) .RegisterPostEvictionCallback((key, value, reason, substate) => { Console.WriteLine($"键{key}值{value}改变,因为{reason}"); })); cts.Cancel(); } ViewBag.Cache = result; return View(); }
Distributed Cache Tag Helper
在ASP.NET Core MVC 中有一个 Distributed Cache 我们可以使用。我们直接在页面上增加distributed-cache 标签即可。
<distributed-cache name="mycache" expires-after="TimeSpan.FromSeconds(10)"> <p>缓存项10秒过期-LineZero</p> @DateTime.Now </distributed-cache> <distributed-cache name="mycachenew" expires-sliding="TimeSpan.FromSeconds(10)"> <p>缓存项有人访问就不会过期,无人访问10秒过期-LineZero</p> @DateTime.Now </distributed-cache>
这样就能缓存标签内的内容。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
相关文章推荐
- ASP.NET的三层架构(DAL,BLL,UI)
- 【合集】用Raspberry Pi(树莓派)打造各种服务器
- asp.net mvc 之旅—— 第四站 学会用Reflector调试我们的MVC框架代码
- Asp.net Web Api开发(第二篇)性能:使用Jil提升Json序列化性能
- 从外部的js文件中获取ASPX页面的控件ClientID
- ASP.NET Web API是如何根据请求选择Action的?[上篇] 【转】
- ASP.NET Web API是如何根据请求选择Action的?[下篇] 【转】
- ASP.NET Web API根据代码注释生成Help文档
- ASP.Net MVC @Html类
- asp.net路由表和请求映射
- asp.net MVC 路由
- GRASP (职责分配原则)【转】
- Windows7下安装IIS及ASP配置方法
- ASP.NET MVC Web API 学习笔记---第一个Web API程序【转】
- Aspose使用
- ASP.NET(C#)常用数据加密和解密方法汇总
- dns2,login.asp
- asp.net-mvc验证码 asp.net-mvc c#验证码
- ASP.net MVC 无法初始化 ASP.NET Simple Membership 数据库
- Spring Aop Aspectj切入点语法详解