RavenDB’s aggressive caching allows RavenDB Clients to skip going to the server and serve requests directly off the client cache. That means that you can answer queries very quickly, because you never even have to leave your process memory space.

The downside to that was, of course, that you might be showing information that have changed behind your back.

We gave it some duration in which it was okay to skip going to the server. So we had a maximum of 5 minutes when we had the cached information in place.

That was nice, but it was awkward. And not really nice thing to do in general. In particular, it meant that you had to wait 5 minutes for things to actually show up in the application. That can be... frustrating, because it looks like the system isn’t really doing something. On the other hand, it also means that you still have to query the server when the duration is over, and by necessity, the durations are relatively short.

We decided to change that. Now, when you are using aggressive caching, RavenDB will automatically subscribe to changes from the server. When that happens, we will be able to use the notifications to know when we need to re-check on the server.

That means that you can set an aggressive cache duration of much longer period, and that we will know, automatically and without you needing to do anything.

@Darius Because Raven also includes automatic caching of all documents. If you request a document that already exists in cache, Raven will tell the server "I would like this document, but I already have version X in my cache" using the standard HTTP mechanics of passing the last modified date. If the document has not been modified, the server will send back a 304 Not Modified, and the client will give you back the cached version. So that is the "normal" caching, and the "aggressive" caching is the additional choice to skip talking to the server at all.

Awesome feature. It really sounds like it should be smarter about disconnects, with at least an option to automatically clear the cache - or possibly a smarter way to find out what needs to be cleared.