JavaScript中的cacheStorage使用详解


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 相关文章推荐
网页开发中的容易忽略的问题 javascript HTML中的table
Apr 15 Javascript
javascript 全选与全取消功能的实现代码
Dec 23 Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
微信小程序  modal弹框组件详解
Oct 27 Javascript
react系列从零开始_简单谈谈react
Jul 06 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
Aug 22 Javascript
微信小程序支付前端源码
Aug 29 Javascript
vue工程全局设置ajax的等待动效的方法
Feb 22 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
Apr 28 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
JavaScript 原型与原型链详情
Nov 02 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
JQ实现新浪游戏首页幻灯片
Jul 29 #Javascript
You might like
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
Python中的Numpy入门教程
2014/04/26 Python
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
python爬虫 requests-html的使用
2020/11/30 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
计算机应用毕业生自荐信
2013/10/23 职场文书
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
《草原》教学反思
2014/02/15 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers