【发布时间】:2011-07-26 23:30:32
【问题描述】:
在 asp.net 4.0 中缓存网站用户数据的最佳方式是什么?
我有一个用户设置表,用于跟踪各种用户或会话特定内容,例如 UI 元素的状态(打开/关闭)、首选项、是否已关闭某些对话框等。由于这些不会经常更改(无论如何,对于每个用户)但会经常查找,因此缓存它们似乎是明智的。最好的方法是什么?这些是我确定的选项...
- 将它们直接存储在
HttpContext.Current.Session中(例如Session["setting_name"]) - 将它们存储在
HttpContext.Current.Cache - 使用全局静态字典,例如
static ConcurrentDictionary<string,string>其中键是唯一的用户 ID + 设置名称值 - 在
Session或Cache中为每个会话存储一个字典对象
这样做最明智的方法是什么?从实际的角度来看,Session 与 Cache 有何不同?将字典存储为单个会话/缓存对象而不是直接添加大量值是否有意义?我认为查找可能会更快,但更新会更慢,因为我必须在更改时重新存储整个字典。
使用全局静态缓存可能会带来哪些问题或好处?似乎这将是最快的,但我必须管理大小。如果它达到一定大小,我可以定期刷新它,或者保留一个交叉引用队列并在它达到一定大小时首先删除最旧的东西。这有什么意义还是只是太努力了?
【问题讨论】: