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. (六)linux 学习 -- 从 shell 眼中看世界

    The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap08.html 文章目录 字符展开 `*` 路 ...

  2. WordPress实现中英文数字之间自动加空格排版

    通常来说中文与英文.中文和数字之间加上空格的排版会更加好看,但是如果让我们在编辑文章的时候人工添加,感觉非常繁琐和让人厌烦,所以今天龙笑天下就来跟大家介绍一下WordPress如何实现中英文数字之间自 ...

  3. 数组中重复的数字(Golang)

    使用哈希表 package main import "fmt" func main() { a := [...]int{2,3,1,0,2,5,3} num := make(map ...

  4. Mysql中HAVING的相关使用方法

    having字句可以让我们筛选分组之后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前. 而having子句在聚合后对组记录进行筛选.我的理解就是真实表 ...

  5. appium实例1:启动淘宝app

      1.在android-sdk里面双击SDK-manager,下载buidl-tools 2.勾选build-tools,随便选一个版本,我这里选的是24的版本 3.下载完成后,在D:\androi ...

  6. 获取电脑 ip 地址 及系统

    public static void main(String[] args) throws UnknownHostException { //获取电脑系统 结果:os.name:Windows 10 ...

  7. 入门Docker,你要下载什么?注册什么?

    此随笔根据前人经验改编并亲自实践.遇到问题提供出相应解决方法. 入门Docker,你要下载什么?注册什么? Docker.app你肯定是要下载的!此教程应用于MAC系统PC不保证适用 Docker f ...

  8. Vue 使用技巧手记

    watch监听 Vue监听属性有很多种写法,也有几个配置选项 使用配置项 new Vue({ watch:{ content:{ handler(old,newVal){ console.log(ol ...

  9. Programming Principles and Practice Using C++ Notes1

    序 0.4 创造性和问题求解 首要目标是帮助你学会用代码表达你的思想2,而不是叫你如何获得这些思想.沿着这样一个思路,给出很多实列,展示如何求解问题. 我们认为程序设计本事是问题求解的一种描述形式: ...

  10. Synopsys DC综合脚本示例

    #****************************************************************************** # File : syn_example ...