2011-03-16 84 views
3

我刚刚在流利的nHibernate中发现了Cache.ReadWrite()的喜悦,并且广泛地分析了nhprof的结果。是否有任何理由我不应该缓存在nHibernate中?

它似乎很有用,但这似乎有点欺骗性。我是否有任何特别的原因不会想缓存查询中使用频率很高的对象?我的意思是,我必须假设我不应该只是为了装饰每一个使用缓存属性的映射......或者我应该怎么样?

回答

2

像往常一样,这取决于:)

如果事情有潜力通过不使用二级缓存,或直接在数据库中更改后台进程更新,缓存将导致问题。

不经常访问的实体可能不适合二级缓存,因为它们只占用空间。

另外,如果您将集合映射为反向 - 这些更改不会被第二级缓存正确拾取,您需要手动驱逐集合。如果你有一个Web场景场景(或者你的应用在多个服务器上运行的任何场景),你需要使用分布式缓存(比如memcached)而不是内置的ASP.net。缓存。

+1

只是为了详细说明 - 不仅仅是后台进程等,你应该考虑,但更广泛地说,任何超出你的应用程序的进程。 如果您的应用程序正在网站上运行 - 如果您有多个Web服务器,则必须使用更复杂的缓存机制。 或者即使您只是在同一台服务器上运行2个网站,它们也不会共享相同的二级缓存。 – 2011-03-17 09:21:00

相关问题