CouchDB支持缓存吗?

7
CouchDB是否支持开箱即用的缓存,还是需要像Squid一样手动在其前面放置一个缓存代理?

是的,它支持Web缓存(使用ETags),开箱即用,无需配置。不,它没有Web缓存。 - ctrl-alt-delor
2个回答

15

简短回答:没有。

详细回答:也许有?

CouchDB的整个哲学就是考虑到可能需要查询的所有内容,现在(方便时)计算并将结果存储在索引中。CouchdB的所有数据访问都来自扫描这些索引之一,这非常快,并且往往需要大约相同的时间来处理数据量(实际上是对数时间)。

此外,CouchDB不使用太多内存,因为它期望操作系统缓存其磁盘操作。文件系统缓存提供了巨大的性能优势。

最后,CouchDB支持所有Web缓存标准,因此浏览器和ISP通常会缓存其中的某些部分,而无需进行任何特殊操作。

我想说的是,对于高读取负载,CouchDB通常不需要缓存。然而,没有开箱即用的缓存功能。CouchDB使用HTTP的一个原因是允许人们使用标准工具来解决问题。许多人在生产环境中在CouchDB前面使用缓存Web代理。


5
它支持通过ETags进行缓存。(一种HTTP缓存机制)
ETag与文档的_rev编号相同。您可以在GET请求中发送If-None-Match标头。如果有新版本,则服务器将发送该版本。否则,它会发送一个300 Not Modified标头,让您知道您可以继续使用已有的修订版。

但我仍然需要在其前面使用像Squid这样的缓存代理吗? - ajsie
我对这种情况下的Squid不熟悉。我想这取决于架构。如果您正在尝试通过添加其他缓存节点来卸载单个服务器上的工作负载,您可以让您的CouchDB服务器复制到其他节点以帮助分配负载。 - Dominic Barnes
您不需要一个反向代理缓存,但如果您使用它,它将以内存为代价减少负载。请注意,Web浏览器也会缓存,因此这个反向代理缓存只有在每个用户的每个页面的第一次可缓存命中时才有帮助(重复命中将在浏览器中缓存)。 - ctrl-alt-delor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接