第21天 javascript Service Worker

Service workers 本质上充当Web应⽤程序与浏览器之间的代理服务器,也可以在⽹络可⽤时作为浏览器和⽹络间的代理。它们旨在(除其他之外)使得 能够创建有效的离线体验,拦截⽹络请求并基于⽹络是否可⽤以及更新的资源是否驻留在服务器上来采取适当的动作。他们还允许访问推送通知和后台同步 API

⽬前该技术通常⽤来做缓存⽂件,提⾼⾸屏速度

// index.js
if (navigator.serviceWorker) {
 navigator.serviceWorker
 .register("sw.js")
 .then(function(registration) {
 	console.log("service worker 注册成功");
 })
 .catch(function(err) {
 	console.log("servcie worker 注册失败");
 }); 
}
// sw.js
// 监听 `install` 事件,回调中缓存所需⽂件
self.addEventListener("install", e => {
	 e.waitUntil(
		 caches.open("my-cache").then(function(cache) {
		 return cache.addAll(["./index.html", "./index.js"]);
	 })
 ); 
});
// 拦截所有请求事件
// 如果缓存中已经有请求的数据就直接⽤缓存,否则去请求数据
self.addEventListener("fetch", e => {
 e.respondWith(
	 caches.match(e.request).then(function(response) {
	 if (response) {
	 	return response;
	 }
	 	console.log("fetch source");
 	})
 );
});

打开⻚⾯,可以在开发者⼯具中的 Application 看到 Service Worker 已 经启动了
在 Cache 中也可以发现我们所需的⽂件已被缓存
当我们重新刷新⻚⾯可以发现我们缓存的数据是从 Service Worker 中读 取的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值