RavenDb ETag的检索速度很慢

RavenDb ETag的检索速度很慢,ravendb,etag,Ravendb,Etag,我们开始在中央RavenDb数据库上使用分布式缓存策略。 作为此策略的一部分,我们将从RavenDb检索文档的Etag,并从本地Azure blob存储缓存检索对象的值 我们的对象很少被更改(每天更改10-100个对象),但被检索的频率非常高(每分钟约5000次对象检索,并且不断增加) 这是一个多线程环境,内部RavenDb缓存不够大,无法以攻击性缓存模式存储所有对象 不管怎样,我们看到了从Raven检索ETAG的可怕时刻。在1到10秒之间(!!!?)我们做错了什么?这是密码 return _s

我们开始在中央RavenDb数据库上使用分布式缓存策略。 作为此策略的一部分,我们将从RavenDb检索文档的Etag,并从本地Azure blob存储缓存检索对象的值

我们的对象很少被更改(每天更改10-100个对象),但被检索的频率非常高(每分钟约5000次对象检索,并且不断增加)

这是一个多线程环境,内部RavenDb缓存不够大,无法以攻击性缓存模式存储所有对象

不管怎样,我们看到了从Raven检索ETAG的可怕时刻。在1到10秒之间(!!!?)我们做错了什么?这是密码

return _session.Advanced.DocumentStore.DatabaseCommands.Head(id).Etag;

您每次调用都会发出请求,这意味着您必须支付已经获取文档的大量成本。
直接加载文档而不是执行Head可能会更便宜

没有办法在不加载完整文档的情况下获取Etag?如果Etag可能单独存储,或者至少在RavenTotal中有特殊规定,那么获取完整的文档是没有意义的。除非文档非常大,否则成本几乎相同