Question 1: Do you need to cache data with a virtual directory?
Being a consultant for many years, I have to give it my stock answer (and the right one IMHO) and that is "it depends". As with any application or system you are designing, the requirements and the environment should dictate the design. For example, some of our clients use the Virtual Identity Server for SharePoint edition of our virtual directory to quickly and easily stand up a SharePoint instance that can authenticate people from an External Active Directory forest and an Internal Active Directory Forest. For this type of cross-forest authentication deployment, there is probably not a need to cache this persistently or in memory.
Question 2: If needed, does this cache NEED to be persisted?
I know of one virtual directory vendor that is adamant that cache MUST be persisted. Yes there are times when a cache should be persisted, but saying that the cache always needs to be persisted just doesn't make sense to me. Perhaps they need to persist cache to overcome performance problems in their core engine and can't run sufficiently without it.
Yes, I believe a virtual directory should support both memory and persistent caching, but more importantly it should be architected correctly within the product and not be a hack add-on just to have a check mark on the features list. Keeping track of what each vendor supports can get confusing and sometimes it is misstated.
Mark Wilcox for example, posted in his blog that "OVD does provide a Cache plug-in that is granular - you can apply it globally or per adapter. It also doesn't require any other data-store (or software license, neither of which our competition can currently claim)."
While our Virtual Identity Server (VIS) virtual directory is focused on the more Microsoft centric shops, we are a virtual directory and therefore I suppose a competitor to OVD. With that said, the statement is not true. VIS does not require a separate data-store or software license to use caching. In fact, VIS doesn't require the installation of a custom plug-in to support caching. It is built right into the core engine and is a simple point and click configuration change in the GUI. VIS supports caching not only globally and per connection, but optionally down to which object classes you want to cache.
I think Matt Flynn sums it up well when he closes his post on the subject with, "My opinion is that it's a nice feature to have in the tool bag when needed, but it's not always needed."