我正在建立一个有许多部门和类别的网上商店。它们存储在我们的数据库中,并且经常被访问。
我们使用URL重写,因此存储中的几乎每个请求都会生成一个查找。我们还需要频繁地迭代数据,以便为主商店和百货公司页面生成菜单。
此信息不会经常更改,因此我认为应该将数据库加载到字典中,以加快信息检索速度。
我知道标准做法是将数据加载到应用程序缓存中,但是我假设在缓存过程中会发生某种级别的序列化,并且对于大型数据结构,我认为开销会很大。
我的冲动是将字典放在一个相关类的静态变量中。然而,我想在这方面获得一些输入。我认为这种方法会更快,对吗?这是不是很可怕的练习?有没有更好的办法让我错过呢?
我似乎找不到太多关于这方面的信息,我真的很感谢你能分享的任何信息。谢谢!
发布于 2009-08-20 19:52:39
Application和Cache集合不序列化您传递给它们的对象,它们存储实际的引用。无论对象有多大,从缓存中检索对象都不是一项开销很大的操作。总是坚持使用Cache对象,除非你有很好的理由不这样做,这是一个很好的实践。
值得一提的是,确保您考虑对此集合的多线程访问。如果没有正确锁定,你很快就会遇到一些严重的问题
发布于 2009-08-20 19:54:50
好吧,如果需要的话,我不认为重写代码来使用静态字段而不是应用程序缓存会有太多的工作。我个人会先使用缓存。没有必要过早优化,你测量过它的性能吗?它可能与应用程序缓存对象的行为恰到好处。也许它甚至可以很好地处理db查询?:)
所以,我的答案是-使用缓存,看看它是如何工作的。
发布于 2009-08-20 19:48:54
memcached是你的朋友!(但如果您不向外扩展,则可能会过度杀伤力)
你知道你的字典在应用程序缓存中有多大吗?我很想推荐它作为一个很好的首选。
https://stackoverflow.com/questions/1308354
复制相似问题