pwa demo

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="./index.css"/>
</head>
<body>
    <div class="app">hello pwa</div>
    <script>
        navigator.serviceWorker.register('./sw.js',{
            scope:'/'
        }).then(registation=>{
            console.log(registation)
        },error=>{
            console.log(error)
        })
    </script>
</body>
</html>

sw.js

const CACHE_NAME = 'cache_v2'
//安装态(如果文件没有改变,默认不调用install事件)
self.addEventListener('install',event=>{
    console.log('install',event)
    event.waitUntil(self.skipWaiting());//强行激活
    event.waitUntil(caches.open(CACHE_NAME).then(cache=>{
        cache.addAll([
            '/',
            './index.css'
        ])
    }))
})
//激活态(如果文件没有改变,默认不调用activate事件)
self.addEventListener('activate',event=>{
    console.log('activate',event);
    // event.waitUntil(self.clients.claim());
    //清理之前缓存
    event.waitUntil(caches.keys().then(cachesNames=>{
        return Promise.all(cachesNames.map(cacheName=>{
            if(CACHE_NAME!==cacheName){
                return caches.delete(cacheName);
            }
        }))
    }))
})
//捕获资源请求
self.addEventListener('fetch',event=>{
    console.log('fetch',event);
    event.respondWith(caches.open(CACHE_NAME).then(cache=>{
        return cache.match(event.request).then(response=>{
            if(response){
                return response;
            }
            return fetch(event.request).then(response=>{
                cache.put(event.request,response.clone());
                return response;
            })
        })
    }))
})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值