浏览器缓存和本地存储
这篇文章只是对另一位大佬的文章做一下小总结,详情可以访问:https://segmentfault.com/a/1190000017185195
浏览器缓存可以减少数据请求,使网站响应更快,减少带宽,降低网络负荷
浏览器的缓存方式(强缓存和协商缓存)
1. 强缓存
浏览器访问资源时不会发送请求,直接读取浏览器缓存,并且在chrome控制台的network选项中可以看到size显示from disk
cache或from memory cache
2. 协商缓存
浏览器在访问资源时会向服务器发送一个询问请求,服务器收到请求后,判断是否使用缓存,若不使用缓存,则服务器会给浏览器返回资源
- 根据时间判断是否使用缓存
浏览器在请求时请求头携带If-Modified-Since,服务器在响应请求时携带Last-Modified
浏览器第一次请求时,服务器会返回资源和该资源的最后修改时间(Last-Modified),浏览器会将这个资源和时间缓存下来
之后浏览器再次访问资源时,会携带If-Modified-Since(浏览器缓存下来的最后修改时间)
服务器收到请求后会对比If-Modified-Since和该资源的最后修改时间是否匹配,若匹配则使用缓存,若不匹配则返回新的资源和最后修改时间(Last-Modified)
- 根据唯一标识判断是否使用缓存
浏览器在请求时请求头携带If-None-Match,服务器在响应请求时携带ETag
浏览器第一次请求时,服务器会返回资源和该资源的唯一标识符ETag,浏览器会将这个资源和ETag缓存下来
之后浏览器再次访问资源时,会携带If-None-Match(浏览器缓存下来的ETag)
服务器收到请求后会对比If-None-Match和该资源的ETag是否匹配,若匹配则使用缓存,若不匹配则返回新的资源和ETag
这两者极为相似,唯一区别就是一个是通过最后修改时间来判断资源是否过期,一个是通过唯一标识来判断资源是否过期,目前常用第二种,精度高,但是性能没有第一种好
常用本地存储
一般常用的本地存储包括:localStorage,sessionStorage和cookie
- localStorage、sessionStorage主要是前端开发人员,在前端设置,一旦数据保存在本地后,就可以避免再向服务器请求数据,因此减少不必要的数据请求,减少数据在浏览器和服务器间不必要地来回传递
- localStorage 保存不受时间限制,除非用户自己删除,否则不会消失
- sessionStorage 保存受时间限制,当前窗口一旦关闭,内容就会消失