互联网面试宝典

您现在的位置是: 首页 >

问题详情

session 和 cookie 的区别和联系,session 的生命周期,多个服务部署时 session 管理。

面试宝典 2023-06-12 Web前端开发工程师 76
区别和联系:
- Session 存储在服务器端,而 Cookie 存储在客户端。
- Session 通常用来保存用户的登录状态、购物车等信息;Cookie 主要用来识别用户、保存用户的偏好设置等信息。
- Session 数据存储在服务器端,反复读写对服务器性能影响较大;而 Cookie 数据存储在客户端,对服务器的负载更小。
- Session 数据的安全性相对 Cookie 更高,因为客户端并不知道服务器端究竟存储了什么数据。

Session 生命周期:
- Session 生命周期取决于服务器端配置、客户端行为等多个因素,一般有以下几种方式管理:
1. 基于浏览器会话的 Session:当用户关闭浏览器后,Session 自动失效。
2. 基于 Cookie 的 Session:将 Session ID 存储在 Cookie 中,使得用户再次访问时可以通过 Session ID 来检索出 Session 数据。这种方式通常需要设置 Session 的超时时间。
3. 基于 URL 的 Session:将 Session ID 直接编码进 URL 中,用户访问时会自动传递;在 Web 应用中很少使用,因为 URL 泄露风险较大。

多个服务部署时 Session 管理:
- 在多个服务部署时,会出现 Session 在不同服务之间无法共享的问题,需要采用一些方案解决,例如:
1. 使用粘性会话(Sticky Session):将同一个用户的请求都发送到同一个服务上,可以通过负载均衡器来实现。
2. 使用分布式 Session:将 Session 数据存储在共享的存储介质中,例如数据库、缓存等,不同服务通过访问共享存储介质来获取 Session 数据。
3. 使用第三方解决方案:例如使用 Redis 等内存数据库来存储 Session 数据,不同服务通过共享 Redis 获取 Session 数据。