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 缓存的主要内容,如果未能解决你的问题,请参考以下文章