Я создаю чистый json api, и я хочу кешировать ответ в соответствии с параметрами сообщения. Есть ли аналогичный способ, как VaryByQueryKeys? Может быть какое-то специальное ПО промежуточного слоя кеша или?
Конечно, я могу использовать MemoryCache, но задаюсь вопросом, может быть, есть какая-то «встроенная» практика.





Проверьте эту ветку здесь: Кеширование WebAPI для http Post
Вам действительно нужен запрос HttpPost для выполнения ваших требований? Рассматривали ли вы использование запроса GET, а затем использование кеширования на стороне клиента?
Для чистого Json API с методом POST вам нужно будет кэшировать данные на стороне сервера с помощью MemCache, Redis или любого другого поставщика кеширования.
Что плохого в использовании только MemryCache против MemCache?
Конечно, не стоит ожидать кеширования в 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;
}
}
Да, наш API - это чистый JSON api с использованием POST 99%