Хранение данных с апи( C#, .net)

Получаю данные с апи, получение этих данных занимает некоторое время и я бы хотел, чтобы у меня не делался постоянно запрос на получение этих данных.

Вопрос - как лучше хранить объект? С помощью сессий, кеш или есть еще способы не обращаться каждый раз к апи? Спасибо заранее!

Далее идет некоторый код(и мое тупое решение проблемы)

Метод контроллера

       public async Task<IActionResult> ScorersSeriaA()
       {
           if (HttpContext.Session.Keys.Contains("Loaded")) // если есть ключ возвращаю объект с данными
               return View("Scorers", _topScorers.Players); 
           _topScorers.Players = await _topScorers.GetTopScorers(WC.URL_SA,Leagues.SeriaA);
           HttpContext.Session.SetString("Loaded", "True"); // устанавливаю ключ в сессии
           return View("Scorers", _topScorers.Players);
       }

Метод сервиса - тут осуществляется запрос к апи и выполняются дополнительные методы.

    public class TopScorers : ITopScorers
    {
        CancellationTokenSource CancellationTokenSource { get; } = new CancellationTokenSource();
        public List<Datum> Players { get; set; }

        public async Task<List<Datum>> GetTopScorers(string url,Leagues footballLeague)
        {
            var client = new RestClient(url);
            client.Timeout = -1;
            var request = new RestRequest(Method.GET);
            request.AddHeader("Accept", "application/json");
            request.RequestFormat = DataFormat.Json;
            IRestResponse response = await client.ExecuteAsync(request, CancellationTokenSource.Token);
            var content = response.Content;
            var root = JsonConvert.DeserializeObject<Root>(content);

            switch (footballLeague)
            {
                case Leagues.EPL:
                    Players = await GetPicturesEPLPlayers(root.data);
                    break;
                case Leagues.SeriaA:
                    Players = await GetPicturesSeriaAPlayers(root.data);
                    break;
                default:
                    break;
            }
            return Players;
        }
    }

Ответы (0 шт):