我对 NHibernate L2 缓存的了解越多,在我看来,您主要从以下场景中受益的越多:
- 您主要是通过 Id 查询,并且...
- 您主要是查询静态数据,和/或
- 您希望经常运行相同的查询(这实际上让我们回到按 Id 查询,因为查询缓存只存储返回的 Id 集)。
我的理解错了吗?如果是这样,它还能在哪些其他情况下产生巨大的性能提升?
我对 NHibernate L2 缓存的了解越多,在我看来,您主要从以下场景中受益的越多:
我的理解错了吗?如果是这样,它还能在哪些其他情况下产生巨大的性能提升?
您的问题似乎与缓存模式有关,而不是与 NHibernate 二级缓存有关。请参阅缓存(计算)。
...缓存是透明存储数据的组件,以便可以更快地处理未来对该数据的请求...
就是这样。如果您的应用程序正在执行任何对性能要求严格的操作,二级缓存可以帮助您更快地为它们提供服务。
NHibernate 通过其完整的参数集(分页、排序、过滤器...)缓存查询,因此即使在简单的场景中,也可以为主页或起始页提供所有文章、员工、任务的列表...所有用户...您可以节省时间和资源。
每当底层数据发生变化时,缓存就会(可能)被清除,并重新加载新数据。
而且因为有非常聪明的缓存提供者,你甚至可以在网络农场中使用 NHibernate 和缓存。这是您应该阅读的第一篇文章:NHibernate 中的一级和二级缓存
SO:不仅用于通过 id 或静态数据获取。即使在具有高流量的事务性应用程序上,二级缓存也可以提高性能。因为即使在很短的时间内,您也可以从缓存(例如 memeora)中获取数据并节省一些毫秒...