浏览器存储的区别(sessionStorage, localStorage, cookie)

699 阅读2分钟

sessionStorage

作用域: 限定在文档源(document origin)级别;此外还限定在窗口中,即同源文档在不同的浏览器标签页中无法共享数据(*如果一个浏览器包含两个元素,它们包含的文档是同源的,那么两者可以共享数据)。

有效期: 当该网页的标签页被关闭,那么所有通过seesionStorage存储的数据都会被删除。

localStorage

作用域: 限定在文档源(document origin)级别,也受浏览器供应商的限制,无法跨浏览器读写数据。

有效期: 存储的数据是永久性的,除非Web应用可以删除存储的数据,否则数据将一直存储在用户的电脑上,永不过期。

cookie

cookie数据会自动跟随http请求在web浏览器和web服务器之间传输。

作用域: 默认是限定在文档源(document origin)级别。并且默认与创建它的页面有关,并对该web页面以及和gaiweb页面同目录或者子目录的其他web页面可见,如http://www.a.com/b/index.html创建一个cookie,那么该cookie对页面http://www.a.com/b/other.htmlhttp://www.a.com/b/c/index.html可见,但对http://www.a.com/a/index.html不可见。但可以通过设置cookie的domain属性(cookie的域只能设置为当前的服务器的域)和path属性来改变。

有效期: 默认保存到浏览器关闭为止(*非标签页关闭),可以通过max-age属性来明确告诉浏览器cookie的有效期。

保存cookie:

function setcookie(name, vlaue, liveTime){
    var cookie = name+'='+encodeURIComponent(value);
    if(typeof liveTime === 'number'){
        cookie += ";max-age="+liveTime;
    }
    document.cookie = cookie;
}

如果要设置cookie的path和domain属性,只需以添加max-age属性相同的形式追加在cookie值后面即可。 如果需删除一个cookie,给该cookie值赋空值,并将max-age设置为0即可。