我正在构建一个纯粹的json api,我想根据post params缓存响应。是否有像VaryByQueryKeys类似的方式? 也许是一些自定义缓存中间件或?
当然我可以使用MemoryCache但是想知道可能有一些“内置”练习。
答案 0 :(得分:0)
点击此处查看此主题: WebAPI caching for http Post
您真的需要HttpPost请求来满足您的要求吗?您是否考虑过使用GET请求然后利用客户端缓存?
答案 1 :(得分:0)
当然不应该期望在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;
}
}