azure - 如何使用 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>
解决方案
检查您在客户端收到的缓存响应,它可能已经包含诸如“日期”或“上次修改时间”之类的标题,如果它们显示正确的日期 - 使用它们。否则,如果您在输入的值将存储在缓存中并在检索时返回set-header
之前使用策略,那么这可能用于将缓存插入时间添加到响应中。cache-store
推荐阅读
- javascript - 使用闭包进行多重选择的数组过滤器函数 - Javascript
- android - 为每个列表项单击实现折叠工具栏
- reactjs - 使用 React Native 中的 react-native-fs 模块从服务器下载流文件
- php - 使用刚刚创建帐户的用户的电子邮件创建一个文件夹,并使用 php 显示用户电子邮件文件夹中的图像
- r - 在绘制由颜色定义的散点图时使用多个 if else
- swift - 文件 '*.swift' 是模块 'Module' 的一部分;忽略导入
- node.js - 发送后无法设置标头 NodeJS Express
- python-3.x - 如何在python中将png上的图像目录转换为jpg
- javascript - 反应:解析错误:意外的令牌,预期的“,”
- c++ - 输入的数字和代码显示的不一样,在struct中使用array,为什么?