浅谈JavaScript的Polymer框架中的behaviors对象


Posted in Javascript onJuly 29, 2015

localStorage 应是家喻户晓的?但本地存储这个家族可远不止它。以前扯过 sessionStorage,现在还有个神奇的 CacheStorage。它用来存储 Response 对象的。也就是说用来对 HTTP ,响应做缓存的。虽然 localStorage 也能做,但是它可能更专业。

CacheStorage 在浏览器上的引用名叫 caches 而不是驼峰写法的 cacheStorage,它定义在 ServiceWorker 的规范中。CacheStorage 是多个 Cache 的集合,而每个 Cache 可以存储多个 Response 对象。

废话不能说再多,下面是 demo

<script>
caches.delete('c1');
caches.delete('c2');
Promise.all([
 caches.open('c1').then(function(cache) {
  return cache.put('/hehe', new Response('aaa', { status: 200 }));
 }),
 caches.open('c2').then(function(cache) {
  return cache.put('/hehe', new Response('bbb', { status: 200 }));
 })
]).then(function() {
 return caches.match('/hehe');
}).then(function(response) {
 return response.text();
}).then(function(body) {
 console.log(body);
});
</script>

首先,在 caches 上调用 open 方法就可以异步地得到一个 Cache 对象的引用。在这个对象上我们可以把 Response 对象 put 进去(参数是一个 URL 和一个 Response 对象)、用 match 方法取出(传入一个 URL 取出对应的 Response 对象)。

match 方法不仅可以在 Cache 上调用 CacheStorage 上也有 match 方法,比如上面例子就打开了两个 Cache,都写入一个叫 /hehe 的 URL。在写入操作完成之后,到外部的 CacheStorage 上调用 match 方法来匹配 /hehe,结果是随机的(没找到这个规则在哪里定义的)。

虽然上面的例子中只对 Cache 对象 put 了一个数据,而 Cache 对象本身可以存放更多的 URL/Response 对。并且提供了 delete(用户删除)、keys(用于遍历)等方法。但是 Cache 并不像 localStorage 一样有 clear 方法,如果非要清空一个 Cache,可以直接在 CacheStorage 上把整个 Cache 给 delete 掉再重新 open。

这套 API 和 ServiceWorker 一家的,它通常被用于 ServiceWorker 中,整个设计风格也和 ServiceWorker 一样都基于 Promise。

Javascript 相关文章推荐
Javascript中的数学函数集合
May 08 Javascript
深入理解Javascript中的循环优化
Nov 09 Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 Javascript
javascript输出AscII码扩展集中的字符方法
Dec 26 Javascript
vue中的数据绑定原理的实现
Jul 02 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
Aug 24 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
JavaScript监听键盘事件代码实现
Jun 03 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
Aug 06 Javascript
JavaScript中的cacheStorage使用详解
Jul 29 #Javascript
JavaScript中数组继承的简单示例
Jul 29 #Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 #Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 #Javascript
浅谈Javascript数组的使用
Jul 29 #Javascript
举例讲解Node.js中的Writable对象
Jul 29 #Javascript
浅谈Javascript数组索引
Jul 29 #Javascript
You might like
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
php文件读取方法实例分析
2015/06/20 PHP
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python 深入理解yield
2008/09/06 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Python生成器generator用法示例
2018/08/10 Python
Django之腾讯云短信的实现
2020/06/12 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
实习单位推荐信范文
2013/11/27 职场文书
中国梦的演讲稿
2014/01/08 职场文书
小学新学期寄语
2014/04/02 职场文书
园林技术专业求职信
2014/07/28 职场文书
优秀员工事迹材料
2014/12/20 职场文书
财务部会计岗位职责
2015/02/03 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
离婚被告答辩状
2015/05/22 职场文书
小学运动会入场口号
2015/12/24 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书