繁体   English   中英

Azure API 管理缓存不起作用,并出现错误“请求不可缓存,策略未应用”。

[英]Azure API Management caching does not work with error "Request is not cacheable, policy was not applied."

我确定我遗漏了一些东西,但我找不到它是什么......我已经设置了一个 Azure API 管理(消费计划)API,它调用了一个远程 API 端点,我想启用缓存。 负载几乎从不改变,所以我确信缓存在这里是有意义的。

这是我的政策:

<policies>
    <inbound>
        <base />
        <set-backend-service base-url="https://xxxapixxx.azurewebsites.net/api" />
        <rewrite-uri template="segments" copy-unmatched-params="true" />
        <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none">
            <vary-by-header>Accept</vary-by-header>
            <vary-by-header>Accept-Charset</vary-by-header>
        </cache-lookup>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
        <cache-store duration="7200" />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

当我在门户中测试调用时,我看到两条与缓存策略相关的 Trace 消息:

在入站跟踪中:

缓存查找(0.012 毫秒)“没有找到适合提供的策略配置的缓存。将跳过策略执行。”

在出站跟踪中:

缓存存储(0.026 毫秒)“请求不可缓存,未应用策略。”

我猜这与 gzip 压缩有关,但仍然看不到如何修复它。

任何猜测,想法?

根据Microsoft 文档,我假设您的定价层会导致此问题

文件说:

内部缓存在 Azure API 管理的使用层中不可用。 可以改为使用外部 Azure Redis 缓存。 在此处输入图片说明

所以我创建了两个 Apim 实例,一个是开发者,一个是消费。 他们都使用相同的策略,但有不同的反应。 开发人员可以使用缓存,但消费人员会返回与您相同的响应。

这是细节。 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM