javaScript 本地缓存的⽅法我们主要讲述以下四种:
Cookie ,类型为「⼩型⽂本⽂件」,指某些⽹站为了辨别⽤⼾⾝份⽽储存在⽤⼾本地终端上的数据。是为了解决 HTTP ⽆状态导致的问题
作为⼀段⼀般不超过 4KB 的⼩型⽂本数据,它由⼀个名称(Name)、⼀个值(Value)和其它⼏个⽤于控制 cookie 有效期、安全性、使⽤范围的可选属性组成
但是 cookie 在每次请求中都会被发送,如果不使⽤ HTTPS 并对其加密,其保存的信息很容易被窃取,导致安全⻛险。举个例⼦,在⼀些使⽤ cookie 保持登录态的⽹站上,如果 cookie 被窃取,他⼈很容易利⽤你的 cookie 来假扮成你登录⽹站
关于 cookie 常⽤的属性如下:
通过上述,我们可以看到 cookie ⼜开始的作⽤并不是为了缓存⽽设计出来,只是借⽤了 cookie的特性实现缓存
关于 cookie 的使⽤如下:
关于 cookie 的修改,⾸先要确定 domain 和 path 属性都是相同的才可以,其中有⼀个不同得时候都会创建出⼀个新的 cookie
最后 cookie 的删除,最常⽤的⽅法就是给 cookie 设置⼀个过期的事件,这样 cookie 过期后会被浏览器删除
HTML5 新⽅法,IE8及以上浏览器都兼容
下⾯再看看关于 localStorage 的使⽤
设置
获取
获取键名
删除
⼀次性清除所有存储
localStorage 也不是完美的,它有两个缺点:
sessionStorage 和 localStorage 使⽤⽅法基本⼀致,唯⼀不同的是⽣命周期,⼀旦⻚⾯(会话)关闭, sessionStorage 将会删除数据
indexedDB 是⼀种低级API,⽤于客⼾端存储⼤量结构化数据(包括, ⽂件/ blobs)。该API使⽤索引来实现对该数据的⾼性能搜索
虽然 Web Storage 对于存储较少量的数据很有⽤,但对于存储更⼤量的结构化数据来说,这种⽅法不太有⽤。 IndexedDB 提供了⼀个解决⽅案
关于 indexedDB 的使⽤基本使⽤步骤如下:
关于使⽤ indexdb 的使⽤会⽐较繁琐,⼤家可以通过使⽤ Godb.js 库进⾏缓存,最⼤化的降低操作难度
Cookie
:存储的客户端,即用户的浏览器中,由于 Cookie 是通过 HTTP 请求在服务求出和浏览器之间传输的,因此他们的大小有限制,通常不超过 4 KB,大多数浏览器限制在 20 个,有的可能 50 个sessionStorage
:也是存储在客户端的,但是他是一个临时的回话存储对象,sessionStorage 没有严格的大小限制,但是它仅仅在当前浏览器窗口或标签页中有效,并且当窗口或标签页关闭时,存储的数据会被自动删除localStorage
:同样存储在客户端,并且提供了比 Cookie 更大的存储空间,一并来说,浏览器的支持可以达到 5 M,这使得它可以存储更多的数据Cookie
:可以设置过期时间,从而决定其在浏览器中的有效期,一旦过期,Cookie 将被删除,如果没有设置过期时间,默认是关闭浏览器后失效sessionStorage
:数据在页面会话期间保持有效,当页面会话结束时,数据会被清除,它提供了一种在单个会话中跟踪用户数据的方式localStorage
:存储的数据没有过期时间,他们会一直保留在浏览器中,直到被手动删除或清除缓存Cookie
:会在每次 http 请求中发送到服务器,因此他们可以用于在客户端和服务器之间传递数据,这种特性使得 Cookie 成为处理用户身份验证和会话管理的常用机制
sessionStorage和localStorage
:不与服务器通信,他们主要用于在客户端存储数据,以便在后续的页面请求或者用户交互中使用
Cookie
:对于同一个域名下的网站,可以共享 Cookie 数据sessionStorage
:数据在不同的窗口或标签页之间不共享localStorage
:在整个浏览器实例中共享数据,无论打开多少个窗口或标签页,都可以访问到相同的 localStorage 数据Cookie
:适用于需要在客户端和服务器之间传递小量数据的场景,如身份验证和会话管理sessionStorage
:适用于在同一浏览器窗口或标签页中临时存储数据localStorage
:适用于需要在客户端长期大量存储数据的场景