首先来说,Session存储于服务器端,由于服务器上有很多Session,如果大家要操作某个Session就需要一个标识key,在Session机制中,这个标识Key就是SessionID。
其实这很好理解,举个例子:你把服务器当成一个教室,每个Session就是一个学生,如果你要找到某个学生,就需要知道这个学生的姓名。
请注意,不同WEB容器生成的SessionID名称是不同的,比如说PHP的SessionID标识名为PHPSESSID,Java容器生成的SessionID标识名为JSESSIONID。
当浏览器第一次访问服务器时,服务器端会生成一个Session(这里服务器端是可以控制Session是否自动生成的),然后将对应的SessionID存储在客户端的Cookie中,下次浏览器再发送请求时,就会将本地Cookie作为头信息传输到服务器端,服务器端获取到SessionID后就能找到与之对应的Session了。
那服务器端的Session是如何存储的呢?
服务器端的Session存储形式是不同的,主要存放形式有:
内存中
服务器File文件中
数据库中
NoSQL存储等
在网站架构中,如果Session存在于内存中,这不利于集群环境下的Session共享互通,所以大家建议是将Session落地存储,最好的方式就是放在NoSQL中存储(如Redis),这样性能最优。
以上就是偶的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 偶是科技领域创作者,十年互联网从业经验,欢迎关注偶了解更多科技知识!