缓存VS会话VS Cookie?

高速缓存VS会话VS Cookies的做什么和不该做什么?

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

我是否应该使用缓存或饼干或一些组合?

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

我主要是做桌面编程,并觉得我缺乏这方面的知识,所以任何人可以扩展在哪里使用缓存,会话,饼干(或数据库)将不胜感激

编辑:从答案看来,数据库和饼干的组合是我想要的。

  • 我必须在连接到会话ID的数据库中存储预订
  • 将会话ID存储在cookie中(加密)。
  • 每页加载检查cookie并从数据库中获取预订
  • 我有一个清理程序,每周运行一次,清除未完成的预订。
  • 我无法将预订存储为cookie,因为用户可以更改价格和其他敏感数据,我必须验证所有内容(不能信任数据)。

    我说得对吗?

    并感谢所有人的精彩解释!


    从桌面应用程序的角度来看网络世界时,状态管理是掌握重要的事情。

  • Session用于存储服务器上当前Web会话的每个用户的信息。 它支持使用数据库服务器作为后端存储。
  • Cookie应该用于存储当前Web会话的每个用户信息或客户端上的持久信息,因此客户端可以控制cookie的内容。
  • Cache对象在单个应用程序中的用户之间共享 。 其主要目的是缓存来自数据存储的数据,不应该用作主存储。 它支持自动失效功能。
  • Application对象在用户之间共享以存储应用程序范围的状态,因此应该使用它。
  • 如果您的应用程序被许多未经身份验证的用户使用,我建议您将数据存储在cookie中。 如果需要身份验证,则可以手动将数据存储在数据库中,也可以使用ASP.NET配置文件管理功能。


    Web本质上是断开连接的模型,所提及的任何选项(会话,应用程序,高速缓存......)都不够可靠。 会话超时,工作进程回收等。

    如果您确实需要将用户进度可靠地存储并延长时间,则数据库是您唯一的解决方案。 如果你有用户配置文件(如果用户必须登录),那么它很简单。 如果没有,请生成一个唯一的标识,将其存储在Cookie(或URL)中,并根据该标识跟踪用户。

    只要确保Id是加密的,然后使用base64编码的字符串,而不仅仅是一个数字值。

    编辑:

    在对Mehrdad Afshari的原始问题和评论进行额外的解释后,对您来说最好的解决方案是使用Session,但将存储设置为Sql Server而不是InProc。

    以下是更多详细信息和说明如何设置:http://msdn.microsoft.com/en-us/library/ms178586.aspx

    请记住,您仍然会有会话超时,但它们将在应用程序池回收,即使服务器重新启动后仍然存在。

    如果您确实需要永久性存储,则使用数据库的自定义解决方案,正如我原先概述的那样是唯一的解决方案


    您不应该使用Cache对象来缓存会话数据,因为缓存是在所有用户之间共享的。 相反,您可以使用Asp.Net Profile属性来存储数据,或者如果用户离开计算机的时间过长,您可以向Session_End事件添加事件处理程序并存储数据。

    链接地址: http://www.djcxy.com/p/60563.html

    上一篇: Cache VS Session VS cookies?

    下一篇: How to store 40.000 images using HTML5 or Phonegap?