2010-01-11 112 views
1

我目前在ASP.MVC项目上使用我自己的成员资格实现。我有一个账户,一个账户可以有超过一个会员资格。缓存帐户信息

我不确定随帐户信息被缓存的最佳方法是什么。我目前正在从控制器的用户属性中加载几乎每个请求的帐户信息。

我应该缓存帐户信息吗?如果哪里是最好的地方,cookies或Session?

回答

1

我对会议的建议很强烈。它们不能很好地扩展并且不适合Web/HTTP类型的体系结构。如果您喜欢REST,请参阅this REST article中的'关键REST原则'。

我建议把用户信息放在cookies中(不要过度使用,只是真正需要的东西)。

并将敏感信息保存在ASP.NET Forms身份验证Cookie中。请参阅Forms Authentication article“步骤4:在票证中存储其他用户数据”。

从数据库中获取其余数据。避免premature optimization

+0

优秀的参考和建议麦克斯韦,你能解释为什么会议不能很好地扩展吗? – adriaanp 2010-01-12 17:47:34

0

这些问题经常出现,答案是“取决于”。

如果您只存储少量的字符串数据,则Cookie正常。有限制(每个cookie 4k,HTTP头限制),并且每次请求和响应都会通过网络发送。您可能不得不从存储在cookie中的数据“重新充注”您的帐户/会员信息。用户可以选择不接受来自您网站的cookies。

会话是强类型的(没有重新通货膨胀),不会随每个请求/响应一起传输。如果您认为您的网络应用程序需要它,有几个扩展会话存储的选项。大多数中小型网站使用会话没有问题。