缓存

浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。

如果不在浏览器设置cookie过期时间,那么cookie会被缓存在内存中,生命周期会跟随浏览器会话结束而结束,这种属于会话cookie,如果设置了cookie的过期时间,那么这个cookie就会被保存在硬盘中,直到过期时间到期后cookie才会失效。cookie是服务器返回给客户端特殊的信息,客户端以文本的形式存放,每次请求都会带上,大小一般在4kb左右,所以如果cookie存放的过大的话就会消耗性能

session

当服务器收到请求后需要创建session,那么回想检查客户端的请求中是否包含sessionid,如果有的话了么服务器端就会获取这个id下的session返回给客户端,否则服务器端就会创建一个session,并且会将这个sessionid的值返回给客户端。session存放大小没有限制。通常使用cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器。如果用户禁用cookie,则要使用URL重写,可以通过response.encodeURL(url) 进行实现;API对encodeURL的结束为,当浏览器支持Cookie时,url不做任何处理;当浏览器不支持Cookie的时候,将会重写URL将SessionID拼接到访问地址后。

localstorage/sessionstorage

这两种数据的缓存方式是HTML5新添加的webstorage,数据存放大小为5MB,他们不跟服务器进行交互通信,不需要持续的将数据发送给服务器,这也是客户了cookie的一些限制
localstorage属于永久性缓存,除非我们手动清除这个缓存值
sessionstorage属于会话缓存,只要浏览器的会话结束缓存也会被清空
只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理
应用场景:localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。sessionStorage:敏感账号一次性登录;

缓存之间的区别

  • cookie的应用场景和优缺点
    场景
  1. 存放用户上次登录的时间等信息,以便下次自动登录
  2. 保存上次查看的页面
  3. 浏览计数
    缺点
  4. 数据存放空间小,只有4kb左右
  5. 浪费带宽,因为每次请求都需要附带cookie信息到服务器
  6. cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下
  • session
    场景
  1. 缓存购物车信息
  2. 缓存用户的登录信息
  3. 将数据放到session中,是用户在不同页面上可以使用
  4. 防止用户非法登录
    缺点:
  5. 如果session过多的时候会造成服务器压力过大
  6. 依赖于cookie,如果禁用了cookie的话那么session的路径就得重写,这样会导致不安全
  7. 创建session随意性比较大,如果session过多的时候就会导致不好维护
  • webstorage的优点
  1. 存储空间大:cookie才4KB,websotrage有5MB
  2. 安全性高:webstorage不会通过http-header发送到服务器,所以也不用担心信息被截获,但是还是存在伪造的可能性
  3. 节省网络流量:websotrage不像cookie每次发送请求都得带上cookide,webstorage获取缓存的信息可以直接在客户端通过特性的方法获取,所以节省了服务器端和客户端之间的交互

    注意

  • 保持状态:cookie保存在浏览器端,session保存在服务器端
  • cookie始终在同源的http中携带而且每次请求都会在服务器端和客户端之间来回传递
  • cookie/localstorage/sessionstorage都是存放在浏览器端的,session这是存放在服务器端的

    参考文章

    参考文章

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器