谈谈本地缓存的几种方式以及他们的区别?
说起本地缓存,大家想到的应该都是这几个方法:localStorage
、sessionStorage
、cookie
。
相同点不必我再多说了,都可以实现本地缓存
的效果。那么他们有什么不同呢?
接下来我把不同点分四个点来说:
与服务器交互
cookie
:是网站为了标识用户的身份而存储在用户本地终端上的数据(通常需要加密),通常会在 同源
的 HTTP请求
中携带(即使不需要),在浏览器和服务器之间来回传递。coolie
还有路径的概念,可以控制存储在某个路径下面。
localStorage & sessionStorage
: 不会自动把数据发给服务器,仅在本地存储
存储大小
cookie
:根据不同浏览器的限制,大小一般不能超过4k,因为每次 HTTP 请求
都会携带
localStorage& sessionStorage
虽然也有存储大小的限制,但比 cookie
大得多,可以达到5M或更大
存储时间
cookie
:在设置 cookie 的有效期之前,是一直生效的,与浏览器页面是否关闭无关
localStorage
:储存持久数据,浏览器页面关闭数据也不会丢失,除非手动清除数据
sessionStorage
:数据在浏览器关闭之后自动清空
作用域不同
cookie
:在所有的同源窗口内,数据是共享的
localStorage
:也是在所有的同源窗口内,数据是共享的
sessionStorage
:不在不同的浏览器窗口中共享,即使是同一个页面