【问题标题】:How to check age of cached response using Azure API Management and Azure Cache for Redis如何使用 Azure API 管理和 Azure Redis 缓存检查缓存响应的年龄
【发布时间】:2021-09-05 11:53:07
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: azure caching redis azure-api-management


    【解决方案1】:

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

    【讨论】:

    • 工作完美。已经有一个 Date 标头被发回,但它始终显示当前时间。在cache-store 之前添加标题就可以了。谢谢维塔利!
    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2021-05-09
    • 2016-06-04
    • 2020-10-01
    • 1970-01-01
    • 2019-10-02
    相关资源
    最近更新 更多