首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定响应在远地点ResponseCache中缓存的时间

确定响应在远地点ResponseCache中缓存的时间
EN

Stack Overflow用户
提问于 2014-01-30 17:41:23
回答 2查看 373关注 0票数 0

我正在试图找出响应何时存储在我的ResponseCache中。我看到以下ResponseCache变量:

代码语言:javascript
复制
responsecache.<policy-name>.cachename
responsecache.<policy-name>.cachekey
responsecache.<policy-name>.cachehit
responsecache.<policy-name>.invalidentry

在缓存响应时,我没有看到一个变量。有这样的变数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-30 17:49:59

在响应流中遇到策略时,ResponseCache政策自动缓存整个响应。我不相信有任何可访问的变量包含响应放置在缓存中的时间。然而,有一种方法可以实现这一点。

首先,我将总结ResponseCache流。假设我们有一个ResponseCache策略RC1。将其放在请求流和响应流中。下面是一个图表:

代码语言:javascript
复制
        -->[P]-->[P]-->[P]-->[RC1]-->[P*]-->[P*]-->[P*]-->
CLIENT                         v                            TARGET
        <--[P]<--[P]<--[P]<--[RC1]<--[P*]<--[P*]<--[P*]<--

当流在请求流中到达RC1时,缓存键已经建立,响应缓存将检查相应的缓存响应。

在缓存丢失的情况下,将运行所有策略(P、P*和RC1)。当响应流中到达RC1时,整个响应将存储在缓存中,并且流将继续。

当缓存命中时,将只运行P和RC1策略。将跳过P*策略,并且不会调用目标服务器。

与缓存策略不同,您不需要为ResponseCache定义缓存中的内容。这是整个反应。但是,您可以通过将数据添加到响应中来添加自己的数据。

在您的示例中,在响应流中调用响应RC1策略之前,向具有当前时间的响应(system.time)添加一个标头。响应将与您的自定义头缓存在其中。然后,在响应RC1策略之后,从响应中提取和删除时间头。使用当前的system.time,还可以计算响应在缓存中的时间。

票数 1
EN

Stack Overflow用户

发布于 2014-01-31 02:53:39

我喜欢迈克提供的答案。但是,试图了解更多关于用例的信息--听起来像是根据缓存条目的年龄而定--您可能不会从缓存中返回它。如果是这种情况,则始终可以指定过期设置,以便Apigee自动使旧的缓存条目失效。您不需要有条件的编程。

代码语言:javascript
复制
  <ExpirySettings>
    <TimeoutInSec>300</TimeoutInSec>
  </ExpirySettings>

参考:http://apigee.com/docs/api-services/content/optimize-performance-using-cache

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21463667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档