【发布时间】:2011-02-10 01:14:07
【问题描述】:
CouchDB 是否支持开箱即用的缓存,还是我必须像 Squid 一样在其前面手动设置缓存代理?
【问题讨论】:
-
是的,它支持网络缓存(带有 etags),开箱即用,无需配置。不,它没有网络缓存。
CouchDB 是否支持开箱即用的缓存,还是我必须像 Squid 一样在其前面手动设置缓存代理?
【问题讨论】:
CouchDB 的整个理念是考虑以后可能要查询的所有内容,现在(在方便时)计算它,并将结果存储在索引中。来自 CouchdB 的所有数据访问都来自扫描这些索引之一,这非常快,而且无论数据量如何(实际上是对数时间),都会花费大致相同的时间。
此外,CouchDB 不会使用太多内存,因为它希望操作系统缓存其磁盘操作。文件系统缓存提供了巨大的性能优势。
最后,CouchDB 支持所有用于缓存的 Web 标准,因此浏览器和 ISP 经常会缓存其中的一部分,而无需任何人做任何特别的事情。
我想我的观点是,对于高 read 负载,CouchDB 通常不需要缓存。 但是,不,没有开箱即用的缓存功能。 CouchDB 使用 HTTP 的原因之一是允许人们使用标准工具来解决他们的问题。许多人在生产环境中确实在 CouchDB 前使用缓存 Web 代理。
【讨论】:
它通过ETags 支持一种缓存形式。 (一种 HTTP 缓存机制)
ETag 与文档_rev 编号相同。您可以发送 If-None-Match 标头以及您的 GET 请求。如果有新版本,服务器会发送。否则,它会发回一个300 Not Modified 标头,让您知道您可以继续使用已有的修订版。
【讨论】: