我刚刚在流利的nHibernate中发现了Cache.ReadWrite()
的快乐,并且已经广泛地用nhprof
分析结果。
它似乎非常有用,但这看起来有点具有欺骗性。是否有任何特殊原因我不想想要从查询中缓存一个非常常用的对象?我的意思是,我不得不假设我不应该只使用缓存属性来装饰每一个映射...或者我应该吗?
答案 0 :(得分:2)
像往常一样,这取决于:)
如果某些内容有可能被不使用二级缓存的后台进程更新,或者直接在数据库中更改,则缓存会导致问题。
不经常访问的实体可能不适合二级缓存,因为它们只会占用空间。
此外,如果您将集合映射为Inverse,您可能会看到一些奇怪的情况 - 正确的二级缓存无法获取更改,您需要手动逐出集合。
正如sJhonny在下面指出的那样,如果您有一个Web场景(或您的应用程序在多个服务器上运行的任何场景),您将需要使用分布式缓存(如memcached)而不是内置的ASP.net缓存