Asp.net – 用于存储字典的缓存与静态变量

我正在建立一个包含许多部门和类别的网上商店。 它们存储在我们的数据库中并经常访问。

我们正在使用URL重写,因此几乎商店中的每个请求都会生成查找。 我们还需要经常迭代数据以生成主存储和部门页面的菜单。

这些信息不会经常更改,因此我认为我应该将数据库加载到字典中以加速信息检索。

我知道标准的做法是将数据加载到应用程序缓存中,但是我假设在缓存期间会出现一定程度的序列化,对于大型数据结构,我认为开销会很大。

我对此的冲动是将字典放在一个相关类中的静态变量中。 但是我想在此获得一些输入输入。 我认为这种方法会更快吗? 这是一种可怕的做法吗? 有没有更好的方法让我失踪?

我似乎无法找到关于此的更多信息,我真的很感激您可以分享的任何信息。 谢谢!

Application和Cache集合不会序列化您传递给它们的对象,它们存储实际的引用。 无论对象有多大,从Cache中检索对象都不是一项昂贵的操作。 始终坚持使用Cache对象,除非你有充分的理由不这样做,这只是一个很好的做法。

唯一值得一提的是确保您考虑对此集合进行multithreading访问。 如果你没有正确锁定,你很快就会遇到一些严重的问题

好吧,如果需要这样做,我认为重写代码以使用静态字段而不是应用程序缓存是不是很重要。 我个人首先使用缓存。 没有必要进行过早优化,您是否测量过性能? 它可能与应用程序缓存对象的行为恰到好处。 也许它甚至适用于db查询? 🙂

所以,我的答案是 – 使用缓存并查看它是如何工作的。

memcached是你的朋友! (但如果你没有扩展,可能会有点矫枉过正)

你知道你的字典在应用程序缓存中会有多大吗? 我很想推荐这是一个很好的第一选择。

恕我直言,一般来说,如果你对底层对象的更新有控制权,你应该使用静态存储。 否则,如果您依赖第三方API进行数据检索,请使用缓存技术。