对于正在寻找答案的人......毕竟有IMemoryCache但不像过去那么漂亮ActionFilterAttribute
但具有更大的灵活性。
长话短说(对于.Net core 2.1,主要由微软文档+我理解):
1-将services.AddMemoryCache();
服务添加到ConfigureServices
文件中Startup.cs
。
2-将服务注入您的控制器:
public class HomeController : Controller
{
private IMemoryCache _cache;
public HomeController(IMemoryCache memoryCache)
{
_cache = memoryCache;
}
3-任意(为了防止拼写错误)声明一个包含一堆键名的静态类:
public static class CacheKeys
{
public static string SomeKey { get { return "someKey"; } }
public static string AnotherKey { get { return "anotherKey"; } }
... list could be goes on based on your needs ...
我更喜欢声明一个enum
:
public enum CacheKeys { someKey, anotherKey, ...}
3- 在 actionMethods 中使用它,如下所示:
获取缓存值:_cache.TryGetValue(CacheKeys.SomeKey, out someValue)
或TryGetValue
如果失败则重置值:
_cache.Set(CacheKeys.SomeKey,
newCachableValue,
new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(60)));
结尾。