在asp.net 4.0中缓存网站用户数据的最佳方式是什么?在asp.net应用程序中缓存用户数据
我有一个用户设置表,跟踪所有类型的用户或会话特定的东西,如UI元素的状态(打开/关闭),首选项,某个对话框是否已被解除,等等。由于这些并不经常改变(对于每个用户,无论如何),但是经常查看,缓存它们似乎是明智的。最好的方法是什么?这是我已经确定的选项...
- 商店他们
HttpContext.Current.Session
直接(例如Session["setting_name"]
) - 商店他们
HttpContext.Current.Cache
- 使用全局静态辞典,例如
static ConcurrentDictionary<string,string>
其中关键是一个独特的用户ID +在Session
或Cache
什么是最明智的办法做到这一点的设置名称值
Session
从实用角度与Cache
有什么不同?将字典存储为单个会话/缓存对象而不是直接添加大量值是否合理?我认为查找可能会更快,但更新速度会更慢,因为当它更改时我不得不重新存储整个字典。 使用全局静态缓存可能会有哪些问题或好处?似乎这将是最快的,但我不得不管理大小。我可以定期刷新它,如果它达到一定的大小,或者保留一个交叉引用队列,并在它达到一定大小时先删除最老的东西。这是否有意义,还是只是太努力了?
服务器场是一种可能性(尽管网站现在托管在一个实例中) - 并且如果某个服务器上缓存的某些内容在另一个服务器上变得不可用,则不会有任何后果(它只是查看它从数据库中再次)。听起来像是要走的路。 – 2011-03-31 14:56:00