Appearance
cookie
只能是字符串类型,如果没有设置过期时间,会一直保存在内存直到浏览器关闭,设置了过 期时间会被存到内存,知道过期时间到了才消失,最大为 4K,且每次获取都要传送 cookie 给服务器,一般用于判断用户是否登录过网站,便于自动登录,保存上次登录的时间或者页 面等
session
session 通过类似与 Hashtable 的数据结构来保存,能支持任何类型的对象(session 中可 含有多个对象),若存在 sessionId 则直接从服务器中获取,若不存在则新建,大小没有限 制,依赖于 cookie(sessionID 保存在 cookie),但保存的东西过多服务器会有压力,一 般用于保存用户的登录信息,购物车之类等。
浏览器第一次访问服务器会在服务器端生成一个 session,有一个 sessionid 和它对应。 它存储在服务器的内存中,tomcat 的 StandardManager 类将 session 存储在内存中,也 可以持久化到 file,数据库,memcache,Redis 等。
客户端只保存 sessionid 到 cookie 中,而不会保存 session,session 销毁只能通过 invalidate 或超时,关掉浏览器并不会关闭 session。
webStorage
保存在客户端,大小 5M
localStorage
生命周期永久,直到用户删除, 常用于长期登录(+判断用户是否已登录),适合长期保存 在本地的数据
sessionStorage
仅在当前会话中有效,关闭浏览器窗口就会被删除, 敏感账号一次性登录;