C# · 12月 26, 2021

c# – 缓存最佳实践 – 单个对象或多个条目?

有人在C#ASP.net应用程序中缓存数据时有什么方法更好吗?

我目前正在使用两种方法的组合,将一些数据(列表,字典,通常的特定于域的信息)直接放入缓存并在需要时装箱,并将一些数据保存在全局数据类中,并通过该数据进行检索类(即globalData类被缓存,它的属性是实际的数据).

两种方法是否可取?

我感觉到,从并行的角度来看,分别对每个项目进行缓存将会更加明智,但从长远来看,它创造了更多的工作,其中更多的功能纯粹涉及从Utility类中的缓存位置获取数据.

建议不胜感激

解决方法 Ed,我认为这些列表和词典包含几乎具有低到期机会的静态数据.那么有些数据会频繁点击,但也会更频繁地更改,所以您使用HttpRuntime缓存来缓存它.

现在,您应该考虑所有数据和不同类型之间的所有依赖关系.如果您在逻辑上发现HttpRuntime缓存的数据在某种程度上取决于您的globalData项目,则应将其移动到缓存中,并在其中设置适当的依赖关系,以便您可以受益于“级联过期”.

即使您使用自定义缓存机制,您仍然必须提供所有的同步功能,因此您不会通过避免其他方式来保存.

如果您需要(预先排列的)具有非常低频率更改的项目列表,那么您仍然可以使用HttpRuntime缓存来执行此操作.所以你可以只是缓存一个字典,并使用它来列出你的项目或索引和访问您的自定义键.