浅谈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 相关文章推荐
jquery zTree异步加载简单实例分享
Feb 05 Javascript
基于Bootstrap实现tab标签切换效果
Apr 15 Javascript
再谈javascript注入 黑客必备!
Sep 14 Javascript
Web前端开发之水印、图片验证码
Nov 27 Javascript
JavaScript基本类型值-Number类型
Feb 24 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
vue router 通过路由来实现切换头部标题功能
Apr 24 Javascript
vue实现记事本功能
Jun 26 Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 Javascript
js实现二级联动简单实例
Jan 11 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
Jul 22 Javascript
如何在CocosCreator里画个炫酷的雷达图
Apr 16 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php实现ping
2006/10/09 PHP
详解PHP中的PDO类
2015/07/06 PHP
Yii快速入门经典教程
2015/12/28 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
详解Django中异步任务之django-celery
2020/11/05 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
技校毕业生个人学习的自我评价
2014/02/21 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
大学生党课心得体会
2016/01/07 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js