【发布时间】:2020-06-11 04:25:08
【问题描述】:
在我的 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 Unauthorized),表明 API 管理未缓存响应(由我在 API 管理上启用的跟踪确认)。 我的印象是整个响应都被缓存了,但情况似乎并非如此......
有人可以告诉我是否可以在 http 代码不成功的情况下缓存响应,如果可以,请指点我一些文档 - 我昨天整天都在谷歌搜索,但找不到更多信息。
提前致谢!
【问题讨论】:
标签: azure caching azure-api-management