Я только что реализовал выходное кэширование своих контроллеров веб-API Asp.Net, используя StrathWeb's library, подключившись к StackExchange.Redis library, подключившись к кэшу Redis-кэша, содержащему Azure.Атрибут CacheOutput Игнорирование кэша Redis с использованием Azure
Я написал специальный класс, который реализует StrathWeb IApiOutputCache interface и вызывает эквивалентные методы StackExchange. Это зарегистрировано в качестве выходного файла кэша в Global.asax.cs.
Вот пример использования:
public class MyApiController : ApiController
{
private const int FIFTEEN_MINUTES_IN_SECONDS = 900;
[CacheOutput(ClientTimeSpan = FIFTEEN_MINUTES_IN_SECONDS, ServerTimeSpan = FIFTEEN_MINUTES_IN_SECONDS)]
async public Task<Data> GetAsync(int param1, string param2)
{
return await GetExpensiveData();
}
[Serializable]
public class Data
{
// Members omitted for brevity
}
}
Когда вызов сделан к апи конечной точке я могу видеть, что структура правильно называет все необходимые методы в моем классе IApiOutputCache: Содержит, Set и Get. Однако даже при обнаружении и возврате кешированной копии метод GetExpensiveData() всегда запускается и возвращаются «свежие» данные.
Ошибок не возникает. Кажется, что кеш работает. Тем не менее, мой дорогой код всегда называется.
Спасибо за помощь :).
Вы можете поделиться своей реализацией IApiOutputCache Redis? – tuler