ASP.NET Core 缓存使用详细步骤
前言
使用缓存可以减少生成内容所需的时间,显著提高应用的性能和可伸缩性。 缓存最适用于不常更改且生成成本很高的数据。 缓存生成的数据副本可以比从源中更快地返回。ASP.NET Core 支持多个不同的缓存。 最简单的缓存基于 IMemoryCache。 IMemoryCache 表示存储在 Web 服务器内存中的缓存。
IMemoryCache 更适用于 ASP.NET Core 依赖关系注入。缓存可以存储任何对象,缓存项均存储为键值对。
使用缓存时因注意以下要点:
1.使用过期限制缓存增长;
2.使用 SetSize、Size 和 SizeLimit 限制缓存大小。 ASP.NET Core 运行时不会根据内存压力自动限制缓存大小,应由开发人员自行限制缓存大小。
以下就是使用IMemoryCache的示例代码。
示例
程序集:Microsoft.Extensions.Caching.Memory
private IMemoryCache _cache;
public LoginController(IMemoryCache memoryCache)
{
_cache = memoryCache;
}
public async Task<IActionResult> Index()
{
//添加缓存
var cache1 = await _cache.GetOrCreateAsync("key", it =>
{
it.SlidingExpiration = TimeSpan.FromSeconds(50); //滑动过期时间
return Task.FromResult("测试"); //存储值
});
//添加缓存
var cache2 = await _cache.GetOrCreateAsync("key2", it =>
{
it.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(10); //绝对过期时间
return Task.FromResult("测试"); //存储值
});
//获取缓存值
var c = _cache.Get<string>("key");
var c1 = _cache.Get<string>("key2");
return View();
}
附录
对于大多数应用,已默认启用 IMemoryCache。
例如,调用 AddMvc、AddControllersWithViews、AddRazorPages、AddMvcCore().AddRazorViewEngine 和 ConfigureServices 中的许多其他 Add{Service} 方法已经默认启用 IMemoryCache。 对于不调用上述 Add{Service} 方法之一的应用,可能需要手动调用 ConfigureServices 中的 AddMemoryCache。