首页 > 解决方案 > 如何使用 Azure API 管理和 Azure Redis 缓存检查缓存响应的年龄

问题描述

我正在使用 Azure API 管理中的 API,该 API 具有用于存储响应的外部 Azure Cache for Redis 实例。当缓存命中发生时,我想通过响应标头查看缓存响应的陈旧程度。尽管这似乎是缓存的基本功能,但我似乎找不到任何资源或文档来解释如何实现这一点。最终,我希望我的前端显示“您的数据已存在 16 分钟”的效果,让用户有机会同步最新数据(并在此过程中更新缓存)。

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

编辑:Vitaliy 在下面的回答效果很好。对于那些好奇的人,这就是我现在的政策

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

标签: azurecachingredisazure-api-management

解决方案


检查您在客户端收到的缓存响应,它可能已经包含诸如“日期”或“上次修改时间”之类的标题,如果它们显示正确的日期 - 使用它们。否则,如果您在输入的值将存储在缓存中并在检索时返回set-header之前使用策略,那么这可能用于将缓存插入时间添加到响应中。cache-store


推荐阅读