如何使用 Azure API Management 和 Azure Cache for Redis 检查缓存响应的年龄
How to check age of cached response using Azure API Management and Azure Cache for Redis
我正在使用 Azure API 管理中的 API,它具有用于 Redis 实例存储响应的外部 Azure 缓存。当发生缓存命中时,我想通过响应 header 查看缓存的响应有多陈旧。虽然这似乎是缓存的基本功能,但我似乎找不到任何资源或文档来解释如何实现这一点。最终,我希望我的前端显示“您的数据已存在 16 分钟”的效果,让用户有机会同步最新数据(并在此过程中更新缓存)。
我尝试通过 APIM 政策查看我可用的属性,但那里似乎没有任何相关内容。最坏的情况我可以在来自 APIM 个端点的每个响应中包含一个 requestedAt
属性 这样当缓存命中发生时我可以看到原始请求是什么时候发出的,但是我宁愿如果可能的话,通过 headers 实现此功能。
编辑:下面 Vitaliy 的回答很有效。对于那些好奇的人,这就是我的政策现在的样子
<outbound>
<base />
<set-header name="Cached-At" exists-action="override">
<value>@(System.DateTime.Now.ToString())</value>
</set-header>
<cache-store duration="360" />
</outbound>
检查您在客户端收到的缓存响应,它可能已经包含 headers,如“日期”或“Last-Modified-Since”,如果它们显示正确的日期 - 使用它们。否则,如果您在 cache-store
之前使用 set-header
策略,您输入的值将存储在缓存中并在检索时返回,因此这可能用于将缓存插入时间添加到响应中。
我正在使用 Azure API 管理中的 API,它具有用于 Redis 实例存储响应的外部 Azure 缓存。当发生缓存命中时,我想通过响应 header 查看缓存的响应有多陈旧。虽然这似乎是缓存的基本功能,但我似乎找不到任何资源或文档来解释如何实现这一点。最终,我希望我的前端显示“您的数据已存在 16 分钟”的效果,让用户有机会同步最新数据(并在此过程中更新缓存)。
我尝试通过 APIM 政策查看我可用的属性,但那里似乎没有任何相关内容。最坏的情况我可以在来自 APIM 个端点的每个响应中包含一个 requestedAt
属性 这样当缓存命中发生时我可以看到原始请求是什么时候发出的,但是我宁愿如果可能的话,通过 headers 实现此功能。
编辑:下面 Vitaliy 的回答很有效。对于那些好奇的人,这就是我的政策现在的样子
<outbound>
<base />
<set-header name="Cached-At" exists-action="override">
<value>@(System.DateTime.Now.ToString())</value>
</set-header>
<cache-store duration="360" />
</outbound>
检查您在客户端收到的缓存响应,它可能已经包含 headers,如“日期”或“Last-Modified-Since”,如果它们显示正确的日期 - 使用它们。否则,如果您在 cache-store
之前使用 set-header
策略,您输入的值将存储在缓存中并在检索时返回,因此这可能用于将缓存插入时间添加到响应中。