Cookie
每个url缓存自己的cookie,cookie的容量较小,只有4K左右,有限期可自行设置,每次发送请求,都会携带至请求头,发送给服务器,可存放(sessionId<权限认证>),存储格式需转换,不能存对象格式,可将其转换JSON.strigify()。
Storage
session local
存放大小为5M,session有效期当前会话,关闭即消失,local永久有效,每次请求不会发送至服务器,session不能共享(另外打开当前页面),local可以共享,这里的共享不知指每个网页的共享,是指同个网页打开多个。
强制缓存、协商缓存
基本原理
浏览器在加载资源时,根据请求头的expire和cache-control判断是否命中强缓存,是则直接从缓存读取资源,不会发送请求到服务器,返回200状态码from cache。(通过hash判断两者是否不一样)
如果没有命中缓存,浏览器一定会发送一个请求到服务器,通过last-modified和etag验证资源是否命中协商缓存,如果命中,服务器会将这个请求返回,但是不会返回这个数据的资源依然是从缓存中读取资源,状态码为304Not Modified。(通过hash判断两者是否不一样)
如果前面两者都没有命中,直接从服务器加载资源
不同点:强制缓存不发请求至服务器,协商缓存会发送请求到服务器
问题:存在一张图片首次获取,然后更新,同样的url,再次获取时还是旧的图片 解决办法彻底禁止缓存,不常用 更新时,返回新的url后需添加时间戳,?time=xxx。再次获取由于时间戳不同的原因不会读缓存。