cookie
通常由浏览器进行存储,然后将cookie与每个后续请求一起发送到同一服务器。收到HTTP请求时,服务器可以发送带有Cookie的header头。可以给Cookie设置有效时间。
应用于:
- 会话管理: 登陆名,购物车商品,游戏得分或者服务器应要记录的其他内容
- 个性化: 用户首选项、主题或者其他设置
- 跟踪:记录和分析用户的行为,比如埋点
记录用户的一个唯一id,每次访问服务器都会将cookie带过去,可以根据这个来记录用户的行为,生成个性化推荐
sessionStorage
- 创建一个本地存储的键/值对
应用于:页面与页面之间的传值。如果用户关闭标签页,那值将会清空。只适合页面之间的存值。
IndexedDB
索引数据库
与cookie的区别,cookie的限制大小大约是4kb,不同浏览器之间有区别。但是IndexedDB可以存储几个M的数据。
应用于:
- 客户端存储大量结构化数据
- 没有网络连接的情况下使用(比如Google Doc、石墨文档等)
- 将冗余、很少修改、但经常访问的数据,以避免随时从服务器获取数据。
LocalStorage
本地存储。用户关闭浏览器之后还是会存在。
- 应用于:
- 缓存静态文件:css、js。
页面首次加载之后,缓存进localStorage。更新策略:每次发布之后将文件内容做一个MD5值之后作为localStorage的key;缓存在localStorage在弱网的情况下,用户体验还是跟网络良好时保持一致。 - 缓存不常变更的API接口数据。
- 存储地理位置信息,包括周边的住宿等信息,下次再访问相同的地址时候,可以推荐
- 浏览页面的具体位置,比如阅读类的网站,提高用户体验。