【发布时间】:2010-10-07 21:07:31
【问题描述】:
关于缓存 VS 会话 VS Cookie 的注意事项是什么?
例如:
我经常使用会话变量,当用户开始订购产品然后去吃午饭并在几个小时后回来继续预订时,有时会在预订应用程序中出现问题。我将预订存储在会话中,直到用户确认或中止预订,因此当用户只需单击浏览器中的 X 并且永远不会返回时,我不需要与数据库对话并处理数据库中的中途预订。
我应该改用缓存或 cookie 或某种组合吗?
(此外,当应用程序出现错误时,会话对象会自行重置,因此我会遇到更多问题)
我主要从事桌面编程,我觉得我在这里缺乏很多知识,所以任何可以扩展在哪里使用缓存、会话、Cookie(或数据库)的人将不胜感激
编辑: 从答案看来,DB 和 cookie 的组合是我想要的。
- 我必须将预订存储在连接到会话 ID 的数据库中
- 将会话 ID 存储在 cookie 中(加密)。
- 每个页面都加载检查 cookie 并从数据库中获取预订
- 我有一个每周运行一次的清理程序,用于清除未完成的预订。
我无法将预订存储为 cookie,因为这样用户就可以更改价格和其他敏感数据,而我必须验证所有内容(不能信任这些数据)。
我说对了吗?
感谢大家的精彩解释!
【问题讨论】:
-
其实,如果你想在服务器上存储数据,你可以使用 ASP.NET 匿名标识而不是使用会话 ID。通过启用匿名标识,ASP.NET Profile 对象将自动为您处理映射和存储(对于经过身份验证和未经身份验证的用户)。
标签: asp.net session cookies state-management