浅谈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小技巧
Mar 01 Javascript
js 绑定键盘鼠标事件示例代码
Feb 12 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
纯javascript实现分页(两种方法)
Aug 26 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
Sep 16 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
原生js实现选项卡功能
Mar 08 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
vue实现移动端input上传视频、音频
Aug 18 Javascript
Vue父组件监听子组件生命周期
Sep 03 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
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
怎么快速自学python
2020/06/22 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
家居设计专业个人自荐信范文
2013/11/26 职场文书
上课玩手机检讨书
2014/02/08 职场文书
1亿有多大教学反思
2014/05/01 职场文书
奶茶店创业计划书
2014/08/14 职场文书
升国旗演讲稿
2014/09/05 职场文书
党员检讨书范文
2014/12/27 职场文书
安全保证书怎么写
2015/02/28 职场文书
唐山大地震的观后感
2015/06/05 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
终止合同协议书范本
2016/03/22 职场文书