前端本地储存机制
假设你有一个网站,你想要他登录一次后,七天内就实现免登录,也就是说这个时候你需要在七天之内记住他的登录状态,这时你该怎么办?
解决方法很多,下面是三种前端本地储存的方法
Cookie存储 ⇒ document.cookie = " ";
引号中是键值对形式的数据(需要注意:储存多个数据时 只有第一个键值对会生效.需要储存多条数据,可以使用循环添加数据)
给cookie添加时间:如果不设置时间,cookie默认是在浏览器关闭时清空。
expires:设置到某个具体时间(示例如下)**
var d = new Date();
d.setTime(d.getTime() + 3 * 1000);//给时间d加上三秒
document.cookie = “name=zs;expires=” + d.toUTCString(); //在时间d时,cookie失效
max-age=3600;给数据设置了1小时储存(直接跟时间 单位为秒)
给cookie设置路径:
关于path路径
- 在默认的情况下cookie会与【它所在网页、同目录下网页、与这个网页所在目录下的子目录下的网页关联】
- 在默认的情况下,除了创建cookie的页面和其同目录下的页面可以直接对cookie进行修改外,这个网页所在目录下的子目录下的网页只能读取而无法修改。
- cookie中可以存在同名的属性键,在path不同的情况下,他们可以共存。同样的如果要删除的话也要带上path信息才能删除。
- 如上所言,如果想要让外层目录下的网页访问子目录下的cookie的话,那么需要把cookie的path设置为/,表示根目录,那么当前网站的所有页面都可以读取此cookie中设置的值,同时也可以修改cookie值。
修改cookie:
增:document.cookie = “(需要存储的键值对)”
删:将需要删除的cookie的max-age设置为0,expires设置的时间为当前这一刻(pash路径必须一致)
查:document.cookie
改:重新给键值对赋值 如document.cookie = “user = ls”;(就把原来的用户张三改为了李四)
localStorage—永久性本地存储
设置之后就永久有效,在整个网站的所有页面都有效 。一般浏览器支持5M的大小
localStorage的增删查改
可以直接如同一个对象进行操作,也可以使用相应的方法(localStorage–proto–)
① localStorage的值被设置后,在当前项目(域)下的所有页面都有效。
② localStorage存储引用类型时【如对象与数组】必须要以字符串形式存入
sessionStorage–临时性页面的会话存储
sessionStorage操作上和localStorage一样,可以直接如同一个对象一样操作,也可以使用相应的方法setItem/getItem/clear
① sessionStorage依赖于当前窗口,在当前窗口被关闭后就会销毁
sessionStorage,
② SsessionStorage依赖于窗口,而不依赖于页面。