在Couchdb / Cloudant视图上使用基于etag的缓存?

时间:2012-10-19 18:21:34

标签: rest http-headers couchdb etag cloudant

我正在使用Couchdb(由Cloudant托管)。关于Couchdb的一个很酷的事情是,当你查询文档时,它支持标准的基于http etag的缓存(etag是文档的_rev字段)。

但是,我注意到,当我请求一个视图时,etag在每个请求上都是不同的,即使底层文档没有改变,这也会破坏使用etags来最小化来自数据库服务器的流量的目的。

我需要调整某个设置以解决此问题吗?

编辑:

这是我的设计文档的链接: https://codeliberate.cloudant.com/crowdfunder/_design/xLgxNgK_dXEQxHbzmEiCbWE_wackXLk83xDp28ShH8Q_

这是视图输出的链接:https://codeliberate.cloudant.com/crowdfunder/_design/xLgxNgK_dXEQxHbzmEiCbWE_wackXLk83xDp28ShH8Q_/_view/xLgxNgK_dXEQxHbzmEiCbWE_wackXLk83xDp28ShH8Q_

每次我在Chrome中刷新视图并使用网络控制台检查服务器发送的标头时,我会得到一个不同的标签(例如,我刷新的最后三次,我分别得到34c474c51f0beb87fa13755b9594c52a,39da8a25e57ba660da6a905d8374b26f和6c5862d8d4a9375d484aaa1c1c9e8321) 。非常确定基础数据在刷新之间没有变化。

2 个答案:

答案 0 :(得分:2)

你所描述的是非常令人惊讶的......只要我不改变文件,我就会得到同样的etag以供观看。它与“If-None-Match”标题一起使用效果非常好。

您确定使用“真实视图”而不是:

  • 临时观点?
  • 一个清单?

答案 1 :(得分:2)

目前,Cloudant支持在单个文档上进行ETag缓存(其中ETag是文档的_rev字段),但不支持视图:(