缓存VS Session VS cookies?

Ste*_*fan 61 asp.net cookies session state-management

有关Cache VS Session VS Cookies的注意事项有哪些?

例如:
我正在使用会话变量很多,当用户开始订购产品然后去吃午饭并在几个小时后回来继续预订时,有时会在预订应用程序中出现问题.我将预订存储在会话中,直到用户确认或中止预订,因此当用户只需在浏览器中单击X并且永不返回时,我无需与数据库通信并处理数据库中的中途预订.

我应该使用缓存或cookie或某种组合吗?

(此外,当应用程序中出现一些错误时,会话对象会自行重置,因此我会遇到更多问题)

我主要做桌面编程,觉得我在这里缺乏很多知识,所以任何可以扩展使用Cache,Session,Cookies(或db)的人都会受到赞赏

编辑:从答案看来,似乎DB和Cookie的组合是我想要的.

  1. 我必须将预订存储在连接到会话ID的数据库中
  2. 将session-id存储在cookie中(加密).
  3. 每个页面加载检查cookie并从数据库中获取预订
  4. 我有一个清理程序,每周运行一次,清除未完成的预订.

我不能将预订存储为cookie,因为用户可以更改价格和其他敏感数据,我必须验证所有内容(不能信任数据).

我做对了吗?

谢谢你们所有人的出色解释!

Meh*_*ari 84

从桌面应用程序角度来到Web世界时,状态管理是一个至关重要的事情.

  • Session用于存储服务器上当前Web会话的每用户信息.它支持使用数据库服务器作为后端存储.
  • Cookie应该用于存储当前Web会话的每个用户信息或客户端上的持久信息,因此客户端可以控制cookie的内容.
  • Cache在单个应用程序中的用户之间共享对象.其主要目的是缓存数据存储中的数据,不应将其用作主存储.它支持自动失效功能.
  • Application用户之间共享对象以存储应用程序范围的状态,并应相应地使用.

如果您的应用程序被许多未经身份验证的用户使用,我建议您将数据存储在cookie中.如果需要身份验证,您可以手动将数据存储在数据库中,也可以使用ASP.NET配置文件管理功能.

  • ASP.NET`Profile`对象将用户配置文件信息存储在DB中.你使用`Profile ["Key"] ="Value";`无痛;; (2认同)