浏览器缓存机制
web存储
localstorage&sessionStorage的区别: 有效期和作用域,同时兼容当前所有主流浏览器
localstorage:
- 数据存储永久性永不过期: 除非刻意删除或者设置过期时间
- 作用域限定在文档源: 只有同源的文档才可共享localstorage数据
- 作用域受浏览器供应商限制: 不同浏览器不可共享
sessionStorage:
- 有效期随窗口标签页的关闭而消失: sessionStorage存储的数据即被删除
- 作用域限定在文档源
- 不同浏览器不可共享sessionStorage数据
- 同一浏览器不同窗口,无法共享:每次通过复制地址新打开的标签页即使同源都会重新初始化一个session,故无法共享。但是通过a链接或者window.open打开的新标签页之间共享sessionStorage
存储API
1. setItem(): localstorage.setItem('a', 1); 2. getItem(): localstorage.getItem('a'); 3. removeItem(): localstorage.removeItem('a'); 4. 非IE8中,使用delete操作 5. clear(): localstorage.clear(); 清空全部 6. 枚举 for(var i = 0; i < localStorage.length; i++){ var name = localStorage.key(i); var value = localStorage.getItem(name); }
cookie
用户担心cookie的不安全性,可能会将浏览器的cookie禁用,可以通过navigator.cookieEnabled这个属性检测(true:cookie启用,flase:禁用)。
每个cookie的有效期和作用域都需要通过字符串的形式读写document对象的cookie属性来指定
- 有效期很短暂,随浏览器关闭而删除cookie文件。但与sessionStorage不同的是:cookie的有效期是整个浏览器进程而不是单个窗口
- 作用域是通过文档源和文档路径来确定的,默认情况下,cookie和创建他的web页面有关,并对该页面及其该页面同目录或者子目录的其他页面可见(http://www.baidu.com/catalog/index.html创建的cookie,在http://www.baidu.com/catalog/test.html和http://www.baidu.com/catalog/test/index.html是可见的)
IE User Data
IE8以前,web存储的替代方案