- session、cookie、token的区别
三者核心区别在于存储位置和认证机制,具体对比如下:
- Session(会话):存储在服务器端,通过服务器生成的唯一Session ID(通常存于Cookie)识别用户,依赖服务器内存/数据库,多服务器部署需考虑共享问题。
- Cookie:存储在客户端浏览器,由服务器下发,可设置过期时间,用于保存少量非敏感信息(如登录状态、用户偏好),每次请求会自动携带。
- Token(令牌):无固定存储位置(可存客户端Cookie、LocalStorage等),由服务器生成并返回给客户端,客户端后续请求需主动携带Token,服务器通过解密/验证Token确认身份,不依赖服务器存储会话信息,更适合跨域、分布式系统。
- cookie和缓存的区别
核心区别在于用途和管理机制,具体对比如下:
- Cookie:
- 用途:主要用于维持用户会话状态(如登录状态)、记录用户个性化配置(如网页语言、主题),数据量通常限制在4KB以内。
- 管理:由服务器通过HTTP响应头下发,客户端自动存储,可设置过期时间(临时Cookie关闭浏览器失效,持久Cookie到指定时间失效),每次HTTP请求会自动携带。
- 缓存(Cache):
- 用途:主要用于提升数据访问速度,减少服务器请求,可缓存静态资源(如图片、CSS、JS)或动态数据(如接口返回结果),数据量无严格限制(取决于存储介质)。
- 管理:分为浏览器缓存(客户端)和服务器缓存(如Redis、Memcached),客户端缓存由浏览器按规则(如缓存策略、过期时间)管理,服务器缓存由开发者手动配置,不会随每次请求自动携带。