Azure Logic应用程序获取请求缓存结果



我创建了一个Logic App HTTP GET请求,用于从天气API检索数据。

我想实现的是减少对weather API的调用,只对相同的请求使用缓存结果。

示例:在我的公司中,有300台设备正在调用查询中纬度和经度相同的LogicApps端点。在这一点上,我假设,对于每个调用,Logic应用程序都会在weather API上进行调用。相反,我希望它第一次调用weather API,然后,对于所有相同的调用,它返回缓存的结果。

恐怕,如果我在请求的标头中使用缓存控制设置,如果查询不同(例如不同的位置(,逻辑应用程序也会返回相同的缓存结果。

谢谢。

正如@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表存储。这取决于你。

希望能有所帮助。

最新更新