serviceWork.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="./main.css">
<title>servie worker </title>
</head>
<body>
<div class="container">
service worker
</div>
</body>
<script src="./app.js"></script>
</html>
app.js

if (navigator.serviceWorker) {
navigator.serviceWorker.register('./service-worker.js', {scope: './'})
.then((req) => {
console.log(req)
})
.catch(e => {
console.log(e)
})
} else {
alert('not support serviceWorker')
}
service-work.js

self.addEventListener('install', (e) => {
e.waitUntil(
caches.open('app-v1')
.then(cache => {
console.log('open cache')
return cache.addAll([
'./app.js',
'./main.css',
'./serviceWork.html'
])
})
)
}) self.addEventListener('fetch', e => {
e.respondWith(
caches.match(e.request).then(res => {
if (res) {
return res
} else {
// 如果没有缓存,用fetch方法从网络上获取资源
fetch(url).then(res => {
if (res) {
//对于新请求的资源缓存到cachestorage中
} else {
//提示
}
})
}
})
)
})
main.css

.container{
color: red;
}

流程就是注册serviceWorker,指定它的工作范围。以及在serviceworker文件中监听生命周期事件,在worker安装与激活之间,存储文件到缓存

然后通过监听fetch事件,拦截worker管理的文件下的所有请求,如果匹配到缓存,返回。没有,再向服务器发送请求,再将新请求的资源做缓存

总的来说,serviceWorker就像一个代理服务器,只不过必须在https下进行

service worker(一)之离线应用的更多相关文章

  1. Service Worker 离线无法缓存Post请求的问题解决

    许多非REST API甚至可以用于读取数据的POST请求:典型的例子是graphql.soap和其他rpcpapi.但是,Post请求不能在一个现成的渐进式Web应用程序中缓存和脱机使用.浏览器的缓存 ...

  2. 前端存储 (5) - service worker 离线存储

    service worker 离线存储 简介: 一般的网站 在我们无法访问的 时候 一般 回出现 如下 该网页无法访问 service worker 构建的网站不会出现这个错误,因为所有的 请求都是先 ...

  3. Service Worker和HTTP缓存

    很多人,包括我自己,初看Service Worker多一个Cache Storage的时候,就感觉跟HTTP长缓存没什么区别. 例如大家讲的最多的Service Worker能让网页离线使用,但熟悉H ...

  4. Service Worker

    Service Worker 随着前端快速发展,应用的性能已经变得至关重要,关于这一点大佬做了很多统计.你可以去看看. 如何降低一个页面的网络请求成本从而缩短页面加载资源的时间并降低用户可感知的延时是 ...

  5. Service Worker基础知识整理

    Service Worker是什么 service worker 是独立于当前页面的一段运行在浏览器后台进程里的脚本.它的特性将包括推送消息,背景后台同步, geofencing(地理围栏定位),拦截 ...

  6. JavaScript是如何工作的:Service Worker的生命周期及使用场景

    摘要: 理解Service Worker. 原文:JavaScript 是如何工作的:Service Worker 的生命周期及使用场景 作者:前端小智 Fundebug经授权转载,版权归原作者所有. ...

  7. 转《service worker在移动端H5项目的应用》

    1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...

  8. Web API之service worker

    一.参考链接 https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API http://www.alloyteam.com/ ...

  9. 浏览器缓存和Service Worker

    浏览器缓存和Service Worker @billshooting 2018-05-06 字数 6175 Follow me on Github 标签: BOM 1. 传统的HTTP浏览器缓存策略 ...

随机推荐

  1. sort_buffer_size, Sort_merge_passes关系

    对于事务性工作负载是通常最快这个大小设置为32K,并且也是允许的最小尺寸.您应该谨慎使用它设置为较大的值,因为这可以很容易地降低性能. 如果所有的数据进行排序不适合在指定缓冲区大小的MySQL第一种类 ...

  2. 讲解JavaScript中对闭包的理解

    1.JS中变量的作用域 在理解闭包之前,我们得弄清楚JS中变量的作用域原理,它分为全局作用域和局部作用域,它有一个特点就是局部可以获取全局的声明变量,而全局却不能得到局部声明的变量,我们先来看一个小例 ...

  3. excel文件导出和导入

    pom.xml添加依赖 @RestController @RequestMapping(value = "/excel") public class ExpImpExcelCont ...

  4. Ant Design Vue select下拉列表设置默认值

    在项目中需要为Ant Design Vue 的 select 组件设置一个默认值,如下图所示的状态下拉选择框,默认选择全部 代码如下: <a-select v-model="query ...

  5. python列表生成式、键盘输入及类型转换、字符串翻转、字母大小写、数组广播、循环语句等基础问题

    Python知识总结 1.列表生成式 ​ 在实际开发过程中,当需要获取一个连续列表时,可直接使用range(3,10),但是如果获取该列表中每个数据的平方时,通常可以通过for循环来解决这个问题,如下 ...

  6. 用pyinstaller打包一个exe程序

    打包单个exe文件 -F 选项可以打出一个exe文件,默认是 -D,意思是打成一个文件夹. pyinstaller -F TestDataGen.py 打出的桌面程序去掉命令行黑框 -w 选项可以打桌 ...

  7. CF778D Parquet Re-laying 构造

    传送门 如果\(2 \not\mid M\),就把两个图折一下,把\(N\ M\)互换,这样就可以保证\(2 \mid M\). 因为操作可逆,所以我们可以选择一个中间状态,把起始和终点状态都变成这个 ...

  8. 有状态的bean和无状态的bean的区别

    有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一个初 ...

  9. 方便前端使用的SVG雪碧图

    更多代码详情:github.crmeb.net/u/LXT 简介 由于SVG自身的矢量性质,不管在什么情况下,图标都很清晰,可以适应不同尺寸大小和不同分辨率.不用担心模糊和锯齿.同时还能更改图标的填充 ...

  10. "Oracle要对Java收费了,SAP基于Java技术栈的那些产品的客户怎么办"

    今年年初的时候,所谓"Oracle要对Java收费"的新闻,在网上传得沸沸扬扬.这个新闻被专业人士视为标题党,而国内众多技术论坛,比如知乎社区上,有很多大神对"Java收 ...