浅谈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 相关文章推荐
JS获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
纯jquery实现模仿淘宝购物车结算
Aug 20 Javascript
jquery仅用6行代码实现滑动门效果
Sep 07 Javascript
JQuery在循环中绑定事件的问题详解
Jun 02 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
Jul 27 Javascript
微信小程序商城项目之商品属性分类(4)
Apr 17 Javascript
微信小程序实现YDUI的ScrollTab组件
Feb 02 Javascript
JS中移除非数字最多保留一位小数
May 09 Javascript
JS自定义右键菜单实现代码解析
Jul 16 Javascript
vue props 一次传多个值实例
Jul 22 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中的一个中文字符串截取函数
2007/02/14 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python的Django框架中的表单处理示例
2015/07/17 Python
Python获取央视节目单的实现代码
2015/07/25 Python
python简单实现操作Mysql数据库
2018/01/29 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
python selenium循环登陆网站的实现
2019/11/04 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
业务员的岗位职责
2014/03/15 职场文书
团支部推优材料
2014/05/21 职场文书
大学生创业计划书
2014/08/14 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL