代码之家  ›  专栏  ›  技术社区  ›  Kelly Robins

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

  •  15
  • Kelly Robins  · 技术社区  · 17 年前

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

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

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

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

    我的想法是将字典放在一个相关类的静态变量中。不过,我想在这方面得到一些意见。我认为这种方法会更快,对吗?这是可怕的做法吗?有没有更好的方法让我错过?

    我似乎找不到这方面的太多信息,我真的很感激你能分享任何信息。谢谢

    4 回复  |  直到 17 年前
        1
  •  20
  •   LorenVS    17 年前

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

    唯一值得一提的另一件事是确保考虑对该集合的多线程访问。如果没有正确锁定,很快就会出现一些严重问题

        2
  •  4
  •   Pawel Krakowiak    17 年前

    好吧,如果需要的话,我不认为重写代码以使用静态字段而不是应用程序缓存需要做很多工作。我个人会先使用缓存。不需要过早优化,您衡量过性能了吗?它的行为可能与应用程序缓存对象正好匹配。也许它甚至可以很好地处理db查询?:)

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

        3
  •  3
  •   davewasthere    17 年前

    memcached

    你知道你的字典在应用缓存中有多大吗?我很想把它作为一个好的首选。

        4
  •  0
  •   MPD    8 年前

    一般来说,若您可以控制底层对象的更新,那个么您应该使用静态存储。否则,如果数据检索依赖于第三方API,请使用缓存技术。