我问我的朋友,会话存储在哪里?是服务器还是浏览器?他说,存储在服务器上。然后我说,“我认为存储在服务器上的东西叫做缓存”。
于是,我去谷歌搜索阅读文章,但没有找到具体正确的答案,在MSDN上也没有具体的答案。
于是,我去谷歌搜索阅读文章,但没有找到具体正确的答案,在MSDN上也没有具体的答案。
- InProc 模式将会话状态存储在 Web 服务器的内存中。这是默认设置。
- StateServer 模式将会话状态存储在名为 ASP.NET 状态服务的独立进程中。这确保了即使 Web 应用程序重启,会话状态也能够得以保留,并且使得会话状态可以在 Web 农场中的多个 Web 服务器之间共享。
- SQLServer 模式将会话状态存储在 SQL Server 数据库中。这确保了即使 Web 应用程序重启,会话状态也能够得以保留,并且使得会话状态可以在 Web 农场中的多个 Web 服务器之间共享。
- Custom 模式可以让你指定自定义的存储提供程序。
- Off 模式可以禁用会话状态。
快速答案:在两端都有。
以前,会话是存储在服务器端的。这种方法意味着每次创建或验证会话时都必须访问服务器端。会话还必须被复制到所有Web服务器上。这些事情足以影响性能。
另一种老派的方式是将会话数据存储为Cookie(正如答案中提到的那样)。明显的缺点是Cookie有4kb的限制。
为了克服这个问题,万维网联盟定义了客户端sessionStorage,它可以立即添加或验证,并且不需要在Web服务器之间复制数据。
它可以在浏览器的Dev Tools / Application选项卡中看到。例如,这就是我Facebook页面的会话如何看起来的: