当有多个观察者时,我在CouchDB的_changes feed上表现不佳时遇到了麻烦.
我在笔记本电脑上的虚拟机内运行CouchDB,并且多个iOS客户端使用CouchDB的HTTP API在网络上的一个数据库上使用_changes?feed = continuous.随着客户端数量的增加,更改的速度会降低到爬行速度.
注:我实际上是通过Apache反向代理与CouchDB进行通信,后者正在压缩响应.
而且我也注意到,在对Feed应用过滤器时,它通常需要很长时间才能对HTTP流进行任何更改.几乎就像我在等待检查一批不符合我的过滤器的文件.
有什么设置我可以启用或优化我可以做到这将有助于加快这一切吗?
最佳答案 当你意识到每个更改时,couchdb已经要求查询服务器评估filter()函数,因此延迟随着过滤_changes feed的使用者数量的增加而不足为奇.显然,它不会缓存结果,因此必须为每个使用者执行此操作.
您可以尝试的是删除filter参数并使用include_docs = true.这样,Feed生产者就不必要求视图服务器评估更改.这应该使它更具响应性.当然,这会带来显着增加Feed中传输数据量的代价,您必须在客户端复制filter()函数逻辑.它不理想,但我认为它值得一试.