会话存储在哪里?

时间:2015-05-19 08:41:55

标签: c# asp.net session

我问我的朋友,会话存储在哪里?在服务器或浏览器? 他说,在服务器上。 然后我说“我认为在服务器上保存的东西称为缓存”。

然后,我去谷歌搜索阅读文章,但我没有找到具体的正确答案,在MSDN上也没有具体答案。

3 个答案:

答案 0 :(得分:2)

通常它保存在服务器的内存中,但您也可以使用数据库备份的缓存。它在客户端上从不缓存,因为它可以包含用户不可用的信息,例如数据库的密码。

可以找到可以保存会话状态的完整列表[{3}}:

  
      
  • InProc 模式,用于将会话状态存储在Web服务器的内存中。这是默认设置。
  •   
  • StateServer 模式,它将会话状态存储在名为ASP.NET状态服务的单独进程中。这可确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。
  •   
  • SQLServer 模式将会话状态存储在SQL Server数据库中。这可确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。
  •   
  • 自定义模式,可让您指定自定义存储提供程序。
  •   
  • 关闭模式,禁用会话状态。
  •   

答案 1 :(得分:2)

会话本身存储在服务器端。访问服务器的每个浏览器都将从服务器获取唯一的会话ID。此会话ID浏览器将请求的每个页面发送到同一服务器。 Session

因此,在客户端(浏览器)端,只有会话ID存储在浏览器cookie.

(这是默认行为,当在浏览器设置中启用会话cookie时...还有一种称为" URL重写"将会话ID作为URL查询参数嵌入的技术,每次服务器都是调用,即使禁用浏览器会话cookie也能使应用程序正常工作)

有关详情,请参阅此http://ejvyas.blogspot.in/2010/02/where-is-stored-is-it-in-browser-or-at.html

答案 2 :(得分:0)

快速解答:两边。

以前,会话存储在服务器端上。这种方法意味着您每次创建或验证会话时都必须去服务器端。该会话还必须为所有Web服务器复制。这些东西会严重损害性能。

将会话数据存储为cookie的另一种老式方法(如答案中所述)。显而易见的流程是cookie的限制为4kb。

为了克服它,万维网联盟定义了网络方面 sessionStorage,可以立即添加或验证该方面,并且不需要在服务器之间复制数据。

可以在浏览器的 Dev工具/应用程序标签中看到。例如,这就是我的Facebook页面会话的样子:

enter image description here