前端缓存cookie、session、localStorage、
2019-12-14 本文已影响0人
智齿_93fa
浏览器缓存意义:浏览器可以存储很多的数据,我们在项目中把不经常更新的数据进行存储,下一次打开页面,先把本地缓存的数据展示,减少对于服务器的请求压力。
HTML5 提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
![](https://img.haomeiwen.com/i19741811/449323155bd43d7d.png)
1. Cookie
http是一种无状态协议,在某个页面已经登陆可以浏览后,再跳转到下一个页面,服务器无法记住是哪个客户端向它发出的请求,则还需要再次登录,用户体验极差,所以使用cookie记录客户端身份。
服务器会存储在一组session集,在服务器端会设置一个响应头Set-Cookie,返回给客户端,客户端接收后,会将Set-Cookie信息存储在浏览器缓存中,之后的每次请求都会在request header中带上cookie信息,服务器会将请求中的cookie值和服务器中的session值进行比对,这样就可以识别客户端了。如果设置过期时间,则关闭浏览器后,cookie还是会保存,除非清除浏览器缓存。如果没有设置过期时间,则关闭浏览器后,cookie会话也会结束。
![](https://img.haomeiwen.com/i19741811/1b2282080b509d39.png)
所以cookie过多数据,会影响通信性能,前端应尽量存储简洁重要数据,比如标注平台:
![](https://img.haomeiwen.com/i19741811/db8f4d4760dc5569.png)
分布式服务时,不同服务分布在不同的服务器上,这样就需要每台服务都存储一份session,如果有100台服务器,则需要复制100份session集,还要更新同步,会对服务器性能造成影响,所以会将session统一存储集中存储。