Azure API管理缓存策略

问题描述 投票:0回答:1

在我的Azure API管理中,我在API级别定义了基于标头的缓存策略。该政策非常简单:

<policies>
        <inbound>          
          <check-header name="token" failed-check-httpcode="400" failed-check-error-message="Token header is missing" ignore-case="true" />
          <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none">
            <vary-by-header>token</vary-by-header>
          </cache-lookup>
          <base />
        </inbound>
        <backend>
          <forward-request />
        </backend>
        <outbound>
          <cache-store duration="3600" />
          <base />
        </outbound>
        <on-error>
          <base />
        </on-error>
    </policies>

[在我的下游返回带有正文的200的情况下可以正常工作-具有相同标头令牌的下一个请求将到达缓存,并且响应将从API管理缓存中返回。

但是下游会返回错误代码(例如:401未经授权),表明API管理未缓存响应(由我在API管理上启用的跟踪确认)。我给人的印象是整个响应都被缓存了,但是事实并非如此……

有人可以让我知道在http代码不成功的情况下是否也可以缓存响应,如果可以,请指向我一些文档-我昨天整天一直在搜索,但是找不到更多信息。

提前感谢!

azure caching azure-api-management
1个回答
0
投票
您可以通过使用cache-lookup-value和cache-store-value解决此问题。即在出站部分中,如果得到401,则使用cache-store-value在令牌中键入一些值,以将其存储在缓存中。并在入站之前执行cache-lookup并使用token进行cache-lookup-value,以查看是否早先存储了值。如果您这样做,则可以立即生成401响应。
© www.soinside.com 2019 - 2024. All rights reserved.