asp.net - 缓存 VS session VS cookie?

标签 asp.net session cookies state-management

缓存、 session 、Cookie 的注意事项是什么?

例如:
我经常使用 session 变量,有时当用户开始订购产品然后去吃午餐并在几个小时后回来并继续预订时,预订应用程序中有时会出现问题。我将预订存储在 session 中,直到用户确认或中止预订,这样当用户只需单击浏览器中的 X 并且不再返回时,我不需要与数据库通信并处理数据库中的中途预订。

我应该使用缓存、cookie 或某种组合来实现此目的吗?

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

我主要从事桌面编程,感觉我在这里缺乏很多知识,因此任何可以扩展在何处使用缓存、 session 、Cookie(或数据库)的人将不胜感激

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

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

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

我说得对吗?

感谢大家的精彩解释!

最佳答案

从桌面应用程序的角度来看,状态管理是进入 Web 世界时需要掌握的关键。

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

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

关于asp.net - 缓存 VS session VS cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/553185/

相关文章:

c# - 有没有办法从替换控件中访问当前 session ?

c# - session 状态跨子域共享 session ,VB.NET 网站 C# MVC 4 应用程序

c# - IsInitiating 如何处理 WCF 契约(Contract)?

javascript - 谷歌分析非法 cookie 破坏 Python 后端

php - 如何在两个不同的 Web 服务器(例如 xampp 和 tomcat)之间使用 session 值。

c# - 如何读取本地cookie

asp.net - 页面加载在 Firefox 上触发两次

c# - 使用 EmptyDataTemplate 时如何删除 ASP.NET GridView 中的空行?

c# - 如何使用 linq 映射两个列表

c# - 如何在列表框中放入\n(换行)?