浅谈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 相关文章推荐
兼容FF和IE的动态table示例自写
Oct 21 Javascript
js判断客户端是iOS还是Android等移动终端的方法
Dec 11 Javascript
javascript日期格式化示例分享
Mar 05 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
Jul 24 Javascript
JavaScript 五大常见函数
Mar 23 Javascript
vue监听input标签的value值方法
Aug 27 Javascript
ssm+vue前后端分离框架整合实现(附源码)
Jul 08 Javascript
详解基于element的区间选择组件校验(交易金额)
Jan 07 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 友好URL的实现(吐血推荐)
2008/10/04 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
简单学习vue指令directive
2016/11/03 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
python动态监控日志内容的示例
2014/02/16 Python
python基础教程之Hello World!
2014/08/29 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
python怎么对数字进行过滤
2020/07/05 Python
Python识别验证码的实现示例
2020/09/30 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
建筑学推荐信
2013/11/03 职场文书
心理健康教育心得体会
2013/12/29 职场文书
学生手册评语
2014/05/05 职场文书
介绍信范文
2015/01/31 职场文书
归元寺导游词
2015/02/06 职场文书
HttpClient实现表单提交上传文件
2022/08/14 Java/Android