浅谈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 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
用Mootools获得操作索引的两种方法分享
Dec 12 Javascript
javascript十六进制及二进制转化的方法
May 06 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
js实现正则匹配中文标点符号的方法
Dec 23 Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 Javascript
bootstrap datetimepicker2.3.11时间插件使用
Nov 19 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
Apr 10 jQuery
vue style width a href动态拼接问题的解决
Aug 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
zend framework重定向方法小结
2016/05/28 PHP
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
bat和python批量重命名文件的实现代码
2016/05/19 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python numpy 常用函数总结
2017/12/07 Python
python列表推导式入门学习解析
2019/12/02 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
浅谈react路由传参的几种方式
2021/03/23 Javascript
护理专业应届毕业生推荐信
2013/11/15 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
初二学生评语大全
2014/12/26 职场文书
幼师求职自荐信
2015/03/26 职场文书
CentOS安装Nginx并部署vue
2022/04/12 Servers
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python