如何使用Azure API管理和Azure Cache for Redis检查缓存响应的期限



我使用Azure API管理中的一个API,该API具有存储响应的外部Azure Cache for Redis实例。我想看看缓存命中时,通过响应标头缓存的响应有多陈旧。虽然这看起来像是缓存的一个基本功能,但我似乎找不到任何资源或文档来解释如何实现这一点。最终,我希望我的前端能够显示出";你的数据是16分钟前的";用户有机会同步最新数据(并在此过程中更新缓存(。

我试着通过APIM策略来查看可用的属性,但似乎没有任何相关内容。在最坏的情况下,我可以在来自APIM端点的每个响应中包含一个requestedAt属性,这样当缓存命中时,我可以看到原始请求是何时发出的,但如果可能的话,我宁愿通过标头来实现此功能。

编辑:Vitaliy在下面的回答非常有效。对于那些好奇的人来说,这就是我现在的政策

<outbound>
<base />
<set-header name="Cached-At" exists-action="override">
<value>@(System.DateTime.Now.ToString())</value>
</set-header>
<cache-store duration="360" />
</outbound>

检查您在客户端收到的缓存响应,它可能已经包含类似";日期";或";最后修改自";,如果这些显示正确的日期-使用它们。否则,如果在cache-store之前使用set-header策略,则您输入的值将存储在缓存中,并在检索时返回,因此这可以用于将缓存插入时间添加到响应中。

最新更新