前言:
目前各位老铁们对“session 保持”可能比较关心,咱们都需要剖析一些“session 保持”的相关内容。那么小编也在网摘上收集了一些有关“session 保持””的相关资讯,希望同学们能喜欢,姐妹们快快来学习一下吧!前言
会话一般是指TCP三次握手就创建了一个会话,然后在会话中 ,传输数据,等TCP关闭连接就关闭会话了。HTTP协议是基于TCP协议的,所以http会话也是在TCP关闭连接后就关闭会话,而在http1.1中,一般一个连接就只能处理一个请求,那如果需要用到权限验证等就无法准确的判断,这使用就需要用到会话了。
会话保持
目前后端的语言框架基本都有处理会话的模块,一般有以下几种方式:
1、存放到文件
将session的信息存放到文件中,在客户端第二次请求的时候,系统就会在文件查找相关的session信息进行验证或者返回指定的数据。
2、存放到内存
session信息存放到文件就会涉及到磁盘IO读写的瓶颈,因此存放到内存可以有效的提升效率。
上面两种方法在单机的时候都可以很顺利的进行,如果是多台服务器进行处理,需要共享session就比较难处理了。如果是存放到文件可以使用文件共享服务(例如:NFS)进行文件共享,但是NFS对高并发的读写性能真的不行啊;存放到内存,有些服务(例如:tomcat)可以直接共享session给同一个集群的其他机器,但是高并发的情况下,会对后端的服务性能有影响。
3、cookies加密存放
可以将信息存放到客户端的cookies中,客户端请求的时候带上cookies信息,这样子请求无论到哪台服务器,都可以有指定的会话标识,但是这样子感觉不安全,客户端不好控制啊。
4、存放到数据库
同一个后端的服务一般都是连接同一个数据库,可以将session信息存放到数据库里面,这样子同个集群的服务器都可以获取到session信息了。但是这样子会给数据库增加很大的负担,因为session信息的查询还是比较频繁的。
5、存放到缓存服务
memcachd、redis等缓存服务,效率都是很高的,可以将session存放到这些服务中,查询效率高,又可以实现共享session的目的。
Python Django支持以上这几种的会话保持方式。
总结
以上观点都是个人看法,如有误,欢迎留言讨论。
标签: #session 保持