【问题标题】:ASP.NET Core cache external web call for X timeASP.NET Core 缓存外部 Web 调用 X 时间
【发布时间】:2018-09-13 17:17:34
【问题描述】:

我有一个 WEB API 方法,其中在一个操作方法中我构建了一个模型,其中 1 个字段是从外部 API 构建的。但是速度优化很重要,我想将单个请求缓存到外部 API X 分钟。我正在尝试使用 HttpClient 和 Delegating 处理程序来实现它,但欢迎使用其他任何东西。

【问题讨论】:

    标签: c# asp.net asp.net-web-api asp.net-core asp.net-web-api2


    【解决方案1】:

    对我来说,更好的解决方案是将 WEB Api 的结果缓存在 内存缓存分布式缓存

    这里是我为分布式缓存做的实现

        private readonly IDistributedCache _cache;
                public Constructor(IDistributedCache cache)
                {
                    _cache = cache;
                }
    
         public async Task<MyModel> GetWebApiData(double? latitude, double? longitude)
            {    
                   var key = $"MyKey";
                    var cachedValue = await _cache.GetAsync(key);
    
                    if (cachedValue == null)
                    {
                        data = "CallWebApi"
                        await SetDataToCache(key, data);
                    }
                    else
                    {
                        data = JsonConvert.DeserializeObject<MyModel>(Encoding.UTF8.GetString(cachedValue));
                    }
    }
    
        public async Task SetDataToCache(string key, MyModel data)
                {
                    if (data != null)
                    {
                        var json = JsonConvert.SerializeObject(data);
                        await _cache.SetAsync(key, Encoding.ASCII.GetBytes(json), new DistributedCacheEntryOptions()
                        {
                            AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
                        });
                    }
                }
    

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2018-02-08
      • 2017-06-22
      • 2011-01-16
      • 1970-01-01
      • 2021-10-15
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多