开发者

Is there any reason I shouldn't cache in nHibernate?

I've just discovered the joy of Cache.ReadWrite() in fluent nHibernate, and have been analyzing the results with nhprof extensively.

It seems to be quite useful, but that seems a bit deceptive. Is there any particular reason I wouldn't want to cache a ve开发者_运维技巧ry frequently used object from a query? I mean, I have to presume I should not just go around decorating every single Mapping with a Cache property ... or should I?


As usual, it depends :)

If something has potential to be updated by background processes that don't use the second level cache, or changed directly in the database, caching will cause problems.

Entities that are infrequently accessed may not be good candidates for second level caching either, as they will just take up space.

Also, you may see some weirdness if you have collections mapped as Inverse - the changes will not be picked up by the second level cache correctly and you'll need to manually evict the collection.

As sJhonny points out below, if you have a web farm scenario (or any where your app is running on several servers) you'll need to use a distributed cache (like memcached) instead of the built in ASP.net cache.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜