我创建了一个Logic App HTTP GET请求,该请求从天气API中检索数据。
我想实现的是仅对相同的请求使用缓存的结果来减少对天气API的调用。
示例:在我公司中,有300台设备正在查询中以相同的纬度和经度调用Logic Apps端点。在这一点上,我假设,对于Logic App的每个调用,都会在weather API上进行调用。相反,我希望它第一次调用weather API,然后对于所有相同的调用,它返回缓存的结果。
恐怕,如果我在请求的标头中使用缓存控制设置,则Logic App在查询不同(例如不同的位置)的情况下也会返回相同的缓存结果。
谢谢。
答案 0 :(得分:1)
如@Thomas在上面的评论中所述,API管理服务比诸如逻辑应用程序之类的应用程序服务的其他服务昂贵。
但是,根据我的经验,我认为使用少量代码来实现缓存逻辑可以花更少的钱。例如,使用Azure表存储来存储这些缓存天气数据既便宜又便宜。您可以通过表分区键和行键从Azure表中获取它们作为日期时间,纬度和经度的查询参数。
这是用于缓存逻辑的简单伪代码。
string partitionKey = "<datetime>"
string rowKey = "<latitude>-<longitude>"
data = fetchWeatherDataFromTable(partitionKey, rowKey)
if data == null {
data = getWeatherDataFromRemoteAPI()
storeWeatherDataIntoTable(partitionKey, rowKey, data)
}
return data
此外,您可以使用其他存储(例如Azure SQL数据库或Redis)代替Azure表存储。由你决定。
希望有帮助。