缓存、会话、Cookie 的注意事项是什么?
例如:
我经常使用会话变量,有时当用户开始订购产品然后去吃午餐并在几个小时后回来并继续预订时,预订应用程序中有时会出现问题。我将预订存储在会话中,直到用户确认或中止预订,因此当用户只需单击浏览器中的 X 并且不再返回时,我不需要与数据库通信并处理数据库中的中途预订。
我应该使用缓存或 cookie 或某种组合来实现此目的吗?
(此外,当应用程序中出现一些错误时,会话对象会自行重置,因此我会遇到更多问题)
我主要从事桌面编程,感觉我在这里缺乏很多知识,因此任何可以扩展在何处使用缓存、会话、Cookie(或数据库)的人将不胜感激
Edit:从答案来看,DB和cookie的组合似乎是我想要的。
- 我必须将预订存储在连接到会话 ID 的数据库中
- 将会话 ID 存储在 cookie 中(加密)。
- 每个页面加载时都会检查 cookie 并从数据库中获取预订
- 我有一个每周运行一次的清理程序,以清除未完成的预订。
我无法将预订存储为 cookie,因为用户可以更改价格和其他敏感数据,而我必须验证所有内容(不能信任数据)。
我做对了吗?
感谢大家的精彩解释!
从桌面应用程序的角度来看,状态管理是进入 Web 世界时需要掌握的关键内容。
-
Session
用于存储per-user当前 Web 会话的信息server。它支持使用数据库服务器作为后端存储。
-
Cookie
应该用来存储per-user当前 Web 会话的信息或执着的有关的信息client,因此客户端可以控制 cookie 的内容。
-
Cache
对象是在单个应用程序中的用户之间共享。其主要目的是缓存数据存储中的数据,不应用作主存储。它支持自动失效特征。
-
Application
对象在用户之间共享来存储应用范围状态并应相应使用。
如果您的应用程序被许多未经身份验证的用户使用,我建议您将数据存储在 cookie 中。如果需要身份验证,您可以手动将数据存储在数据库中或使用 ASP.NET 配置文件管理功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)