缓存VS会话VS Cookie?
高速缓存VS会话VS Cookies的做什么和不该做什么?
例如:
我使用Session变量很多,有时在预订应用程序中遇到问题,当用户开始订购产品时,然后去吃午饭,几个小时后回来继续预订。 我将会议预订存储在会议中,直到用户确认或中止预订为止,因此当用户只需单击浏览器中的X并且永不再回来时,我不需要与数据库交谈并处理数据库中的中途预订。
我是否应该使用缓存或饼干或一些组合?
(当应用程序出现错误时,会话对象会自行重置,因此我会遇到更多问题)
我主要是做桌面编程,并觉得我缺乏这方面的知识,所以任何人可以扩展在哪里使用缓存,会话,饼干(或数据库)将不胜感激
编辑:从答案看来,数据库和饼干的组合是我想要的。
我无法将预订存储为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