WebAPI 核心 2.0 通过 post params 缓存
Posted
技术标签:
【中文标题】WebAPI 核心 2.0 通过 post params 缓存【英文标题】:WebAPI core 2.0 Cache by post params 【发布时间】:2018-10-11 16:51:03 【问题描述】:我正在构建一个纯 json api,我想根据 post 参数缓存响应。有没有类似 VaryByQueryKeys 的方法? 也许是一些自定义缓存中间件或?
我当然可以使用 MemoryCache,但想知道是否有一些“内置”实践。
【问题讨论】:
【参考方案1】:当然不应该期望在 post API 中缓存
但是在特殊控制器上查看这个示例代码,而不是在中间件中,它不是“内置”
可能有用
public class XController : Controller
private readonly IMemoryCache _cache;
public XController(IMemoryCache cache)
_cache = cache;
[HttpPost]
public async Task<IEnumerable<YourCustomModel>> Post([FromBody] ParamtersModel value)
string cacheKey = value.Id.ToString();
IEnumerable<YourCustomModel> cacheEntry = await _cache.GetOrCreate(cacheKey, async entry =>
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(60);
IEnumerable<YourCustomModel> result = await ... your method calling for first time to getting in cache
return result;
);
return cacheEntry;
【讨论】:
【参考方案2】:在此处查看此线程: WebAPI caching for http Post
您真的需要 HttpPost 请求来满足您的要求吗?您是否考虑过使用 GET 请求然后利用客户端缓存?
【讨论】:
是的,我们的 API 是纯 JSON api,使用 POST 99% 对于带有 POST 方法的纯 Json API,您需要使用 MemCache 或 Redis 或任何其他缓存提供程序在服务器端缓存数据。 只使用 MemryCache 和 MemCache 有什么缺点?以上是关于WebAPI 核心 2.0 通过 post params 缓存的主要内容,如果未能解决你的问题,请参考以下文章
应用程序中断访问 dbcontext、Asp .net 核心 web api 2.0 与实体框架核心 2.0 数据库第一种方法