ASP.NET 核心缓存外部网络调用 X 次
ASP.NET Core cache external web call for X time
我有一个 WEB API 方法,在该方法中,我构建了一个模型,其中 1 个字段是从外部 API 构建的。但是速度优化很重要,我想将单个请求缓存到外部 API X 分钟一次。我正在尝试使用 HttpClient 和委托处理程序来实现它,但欢迎使用其他任何方式。
对我来说,更好的解决方案是将来自 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)
});
}
}
我有一个 WEB API 方法,在该方法中,我构建了一个模型,其中 1 个字段是从外部 API 构建的。但是速度优化很重要,我想将单个请求缓存到外部 API X 分钟一次。我正在尝试使用 HttpClient 和委托处理程序来实现它,但欢迎使用其他任何方式。
对我来说,更好的解决方案是将来自 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)
});
}
}