首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Service Worker:让你 Web 应用牛逼起来

他基于h5web worker,所以绝对不会阻碍当前js线程执行,sw最重要工作原理就是 1、后台线程:独立于当前网页线程; 2、网络代理:在网页发起请求时代理,来缓存文件; 兼容性 ?...也可以在ApplicationCache Storage查看缓存具体内容: ? 如果具体断点调试,需要使用对应线程,不再main线程了,这也是webworker通用调试方法: ?...serviceworker何在生产环境中使用吧。...使用很多团队也是启用该工具来实现serviceworker缓存,比如说: 淘宝首页 网易新闻wap文章页 百度Lavas 基本配置 首先,需要在项目的sw.js文件,引入workbox官方...precache对应在installing阶段进行读取缓存操作。它让开发人员可以确定缓存文件时间长度,以及在不进入网络情况下将其提供给浏览器,意味着它可以用于创建Web离线工作应用。

2K50

Service Worker 图片加载失败处理

需刷新后 看效果) ctrl + c 结束node服务 再次刷新页面(从缓存里面读取 依然显示页面) 简介 背景 一个困扰 web 用户多年难题——丢失网络连接。...之前尝试 — AppCache — 看起来个不错方法,但是,它假定你使用时会遵循诸多规则,如果你不严格遵循这些规则,它会把你APP搞得一团糟。...Service Worker浏览器在后台启动一条服务Worker线程 功能特性: 1.一个独立 worker 线程,且只有一个。...2.一旦被 install,就永远存在,除非被 uninstall 3.需要时候可以直接唤醒,不需要时候自动睡眠(此处坑) 4.可代理请求和返回,缓存文件,缓存文件可以被网页进程取到...意味着最坏情况下Service Worker会每天更新一次 //客户端更新方法: localStorage 存下 版本 运行时候对比 var version = 'precache-v3'

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

ServiceWorker工作机制与生命周期:资源缓存与协作通信处理

在 《web messaging与Woker分类:漫谈postMessage跨线程跨页面通信》介绍过ServiceWorker,这里摘抄跟多内容,补全 Service Worker 理解为一个介于客户端和服务器之间一个代理服务器...manifest 缓存 已经被废弃,因为他设计有些不合理地方,他在缓存静态文件同时,也会默认缓存html文件。导致页面的更新只能通过manifest文件版本号来决定。...ApplicationCache Storage可查看缓存具体内容(本地localhost调试) 如果具体断点调试,需要使用对应线程,不再main线程了,这也是webworker通用调试方法...相对于驱动应用主JavaScript线程,它运行在其他线程,所以不会造成阻塞。它设计为完全异步,同步API(XHRlocalStorage)不能在service worker中使用。...workbox原理 通过Proxy按需依赖 熟悉了workbox后会得知,它是很多个子模块,各个子模块再通过用到时候按需importScript到线程

1.3K20

Workbox5+Webpack4构建离线应用

离线缓存优化 将应用静态资源缓存目前最主流性能优化方法,甚至能让应用秒开!...那么问题来了,Service worker离线缓存传统缓存方式对比,什么优势劣势呢,service worker之所以越来越流行,是因为它让前端缓存脱离了服务端,不需要服务端再额外做些什么,前端工程师自己就可以实现缓存...,而且缓存内容完全可控,下面搜索几条主流缓存方式介绍对比。... workbox.core.cacheNames.runtime 获取当前定义缓存动态缓存名称。...,使用navigationRoute可以匹配导航请求,从而从换从中加载index.html,但默认情况会拦截所有导航请求,如果需要控制,可以在方法添加白名单黑名单加以控制。

98010

web渐进式应用PWA

不依赖网络连接 - Service Workers 允许离线工作,或在低质量网络上工作。 类似于应用程序 - 使用应用程序风格交互导航,感觉像一个应用程序。...由于允许 Web 应用程序脱机工作 Service Worker,意味着 Service Worker 渐进式 Web 应用强制要求部分。...Service Worker 这个概念可能比较难懂,它其实是一个工作在其他线程标准 Worker,它不可以访问页面上 DOM 元素,没有页面上 API,但是可以拦截所有页面上网络请求,包括页面导航...每当缓存存储变化时,新版本号将会指定到缓存存储。新缓存存储将会作为当前缓存存储,之前缓存存储将会被作废。...在本示例还添加了主页 logo。当不同 URL 指向同一个资源时,你也可以将这些 URL 分别写到这个数组。offlineURL 将会加入到这个数组

1.2K10

为什么您网站应该离线工作(以及您应该采取什么措施)

我们想让WebCrumbs在离线状态下工作##什么WebCrumbs?这是真的?向我证明。是的,真的!...这个功能在旅途中,比如在飞行或在网络信号较差地方,特别有用。 好被说服了。该怎么做呢?实现离线功能通常涉及使用服务工作线程缓存重要资源,并在用户离线时提供这些资源。...以下演示如何做到这一点一个基本示例:注册服务工作线程首先,你需要在你主JavaScript文件中注册服务工作线程。...(serviceWorker.js)服务工作线程文件你定义应用缓存策略地方。...在实际应用,你可能会有一个更复杂服务工作线程设置,以处理不同类型资源不同缓存策略(例如HTML、CSS、JavaScript、图像)并根据需要动态更新缓存

12700

Web性能优化之Worker线程(下)

大家好,柒八九。 前天在Web性能优化之Worker线程(上)针对Worker专用工作线程Dedicated Worker做了简单介绍描述了如何配合webpack在项目中使用。...但是,感觉针对「服务工作线程」在项目优化方面还是很大可探索空间。 那我们就闲话少叙,开车走起。 由于该篇介绍性文章,难免一些比较生硬概念。...安装状态 「安装状态」执行「所有」服务工作线程设置任务状态。这些任务包括在服务工作线程控制页面前必须完成操作。...如果有一个活动服务工作线程,则这个作为替代服务工作线程可以通过如下方式进入激活状态。 原有服务工作线程控制客户端数量变为 0。 通常意味着「所有受控」浏览器标签页都被关 闭。...该 Response对象实际上来自哪里完全由服务工作线程决定。可以来自「网络」,来自「缓存」,或者「动态创建」。

2.4K20

Progressive Web Apps

但这表明Web正在以渐进增强方式走出PC时代,向着移动化发展 二.试玩 依赖环境 HTTPS 要求服务源必须安全,所以需要HTTPS环境。...,为了达到首屏立即加载效果,可以把带loading默认占位图页面框架作为App Shell展示出来。...开篇所说,PWA并没有天生(首屏)性能优势,Web App适用常规优化手段仍然必要 闪屏(Splash) 从主屏图标进入,可定制启动过程显示内容包括:标题,背景色图像。...为了屏蔽这些边界case,推荐使用GoogleChromeLabs/sw-precache帮助处理缓存控制问题(包括过期,更新策略等等) 缓存有了,接下来实现代理部分,拦截请求,并把缓存内容作为响应:...: 按资源列表预先缓存静态资源 拦截请求 把缓存内容作为响应给过去 3个注意事项: 浏览器缓存可能会影响缓存更新,所以install事件处理器请求不会走缓存,而是直接进入网络 注销service

1.1K40

React 与 Preact PWA 性能分析报告

使用服务端渲染,首屏渲染时间减少到1.1s,首屏完整渲染时间减少到2.4s - 提高了用户在页面加载速度感知,他们可以更提前获取内容,而且在测试显示在SEO也略微改善。...但是缺点就是在初始交互时间糟糕影响。 ? 尽管用户可以看到网站内容,但是当初始化加载javascript时主线程被阻塞了,并且就堵在那里。...使用SSR,浏览器需要比之前请求处理更大HTMl负载,并且接着请求,解析/编译,执行Javascript。虽然这样高效做了更多工作。 但意味着第一次交互时间需要6.6s,反而不如之前了。...下面可以看到Service Worker注册和他们如何使用sw-precache-webpack-plugin来缓存资源。...如果你只想在Webpack使用别名preactpreact-compat生成构建(例如,如果你最开始使用Enzyme),请确保在部署到服务器之前彻底测试一切正常工作

2.2K20

hexo博客添加到桌面应用程序

PWA 优势 PWA 可被发现、易安装、可链接、独立于网络、渐进式、可重用、响应性安全。关于这些含义细节,请参阅 PWA优势。...简单概括为以下几点 可以支持离线观看 可被识别成一个应用程序 响应式 适合任何形式设备 安装PWA插件 安装PWA前提全站支持HTTPS协议 需要自行去域名服务商申请SSL证书 HEXO版本为4.1.1...应遵循如下规则: 如果没有在 manifest 设置 scope,则默认作用域为 manifest.json 所在文件夹; scope 可以设置为 ../ 或者更高层级路径来扩大PWA作用域;...如果需要填写多个尺寸,则使用空格进行间隔,”48x48 96x96 128x128” type {string} 图标的 mime 类型,非必填项,该字段可让浏览器快速忽略掉不支持图标类型 在博客\... manifest.json 与之对应 推荐图片大小转换网站:iloveimg 最后输入以下内容即可 # 清理缓存/生成静态页面/本地预览 $ hexo clean && hexo g && hexo

70430

为 vue 项目添加 PWA 支持

配置 PWA 插件 需要创建或修改项目中vue.config.js,配置项以及示例在此处 想多提几句配置项三个: workboxPluginMode 可选配置项,默认为GenerateSW GenerateSW...: 将指定(或指定文件夹)文件添加到 precache manifest ,或从中排除,支持使用正则表达式 自动跳过 Service Worker 等待阶段 添加离线 Google Analytics...其一个坑点,就是你无法设置不去添加某些或,也就是强制性 主要会影响到maskIcon, Macbook Touch Bar 上图标,由于要求必须 svg,个人开发小应用一般懒得去制作这个图标...,只描述大致思路做法,因为没有实际完整地实践过,因为比较复杂麻烦(好下面就开始云了) 我们需要在workboxOptions中将skipWaiting设置为false,或者不设置,因为默认值为...,SW 就会 skipWaiting 但实际情况,最终生成 SW 并没有这一段代码(也并没有放置在其他 js ),猜测这可能是因为加入代码这一特性 Workbox 4 才加入,而插件生成

3.4K00

Web Worker

Web Worker 一个统称,具体可以细分为普通 Worker、SharedWorker ServiceWorker 等,接下来我们一一介绍其使用方法适合场景。...缓存返回请求 self.onfetch = (event) => { event.respondWith( caches .match(event.request) // 此方法从服务工作线程所创建任何缓存查找缓存结果...调试方法 在浏览器查看调试 ServiceWorker 代码,需要输入 chrome://inspect/#service-workers 演示效果 上面代码缓存了 131.png。...ServiceWorker 可以缓存资源,提供离线服务或者网络优化,加快 Web 应用开启速度,更多是优化体验方面的。...示例代码:https://github.com/Pulset/Web-Worker 参考文献 在网络应用添加服务工作线程离线功能(https://developers.google.com/web/

95150

【腾讯云前端性能优化大赛】前端首屏性能优化

但是上述压缩场景对于SPA项目来说不太可能实现,因为字蛛通过扫描HTML来获取页面需要哪些字,SPA项目的HTML没有经过加载空空也,啥也没有;而且对于含有输入场景网页,由于用户输入不确定性...,明显划不来,所以按需引入重要性非常高,引入第三方库时候因随时注意,是否因为使用一个小功能而大大增加打包后产物体积。...5.2、项目引入(vue-cli项目例子) 下面使用vue-cli项目进行示范,如何在项目中接入SWworkbox: // vue.config.js // 首先需要安装 serviceworker-webpack-plugin...:这个策略工作路线如下图,它会优先从缓存读取数据,同时每次请求也会在后台去服务器请求来更新数据。...当缓存没有数据时候,就会把服务请求返回给客户端使用,并且更新缓存

1.5K41

大厂面试系列(四):spring相关

JDK动态为什么要实现接口? spring默认事务传播属性是什么?嵌套事务子事务什么时候commit? springspringMVC是什么关系?有没有用过JdbcTemplate?...16.springMVC对整个请求处理流程怎样?返回json的话用哪个view? ioc原理、aop原理应用 springmvc底层实现大致逻辑?spring mvc哪些常用注解?...springBean作用域,几种scope区别,springMVCcontroller线程安全?怎么去保证线程安全呢? 对spring理解,仔细讲解一下spring两大特性。...手写个jdk动态代理 spring事务原理 springmvc几个核心类及请求过程 @Autowired作用 Spring单例Bean线程安全?...如何使用 SpringBoot 自动重装应用程序?什么嵌入式服务器?我们为什么要使用嵌入式服务器呢?如何在 Spring Boot 添加通用 JS 代码?

55040

web应用支持离线访问策略缓存

对于缓存,我们并不陌生,但是我们想有主观意识缓存缓存什么,缓存多久,缓存请求资源策略是什么都有自己来定,service worker 能帮我们做到。...相信大多人看到这些概念,我们只需要围绕一个概念:缓存 ,并且策略性,存什么可以控制,也给我们开发离线应用提供了思路。 使用Workbox 还记得那个 sw.js 文件?...workbox提供缓存策略API,常用以下几种 策略名 API staleWhileRevalidate 当请求路由对应 Cache 缓存结果就直接返回,在返回 Cache 缓存结果同时会在后台发起网络请求拿到请求结果并更新...{html,js,css}'], }) ] // ... }); 使用 workbox 提供 Webpack 插件必须在 app/sw.js 包含以下代码才能完成预缓存内容列表注入工作...__precacheManifest || []); 到这里,能想象通过我们对于项目中资源配置,支持离线访问?通过这些配置能够极大提升应用性能,策略,你要才是最美的。 合一,英雄再会!

95420

Service Workers - JavaScript API 简介

意味着它们可以控制页面所有网络请求,并且可以对其进行编程,使用缓存进行响应。 Service Worker 特点 网站必须使用 HTTPS。...除了使用本地开发环境调试时(域名使用 localhost) 运行于浏览器后台,可以控制打开作用域范围下所有的页面请求 单独作用域范围,单独运行环境执行线程 不能操作页面 DOM。...服务工作者启用以下功能,这些功能也是 PWA核心: 离线功能 定期后台同步 推送通知 离线功能 Service Worke 通过缓存资源拦截网络请求来提供离线功能,这些请求可以与先前缓存资源一起使用...我们可以从中得出两个步骤: 预缓存缓存处理请求 这两个步骤都利用了Cache API,它由 Web Workers 浏览器使用,并且为我们提供了用于网络请求存储机制。...定期后台同步 正如在引言中已经提到那样,Service Worker 与其他服务工作者在一个单独线程上运行,所以即使关闭页面,它们也可以执行其代码。 此功能对于执行后台同步提供推送通知很重要。

91920

渐进式Web应用入门-ServiceWorker

即使在比较糟糕网络环境下,也能够快速地加载,且能够推送相关消息, 也可以像原生应用那样添加至桌面或浏览器主屏,能够全屏浏览体验。 PWA Service Worker 是什么关系?...Service Worker 一个运行在浏览器后台进程里js,基于它可以实现消息推送,静默更新以及拦截处理网络请求,包括可编程响应缓存管理, PWA 核心。...工作原理 Service worker 一个完全独立于 Web 页面的 js 脚本,他自己生命周期。...从使用开始 准备工作 首先你站点必须支持https (这也是为什么这两天你访问开源实验室出错原因,在转全站 https)。 其次,你至少得懂一点 js开发。...首先 run 起你本地 server(博客 jekyll 生成,所以直接用了 jekyll 服务),然后 Chrome 右上角三个点,More Tools,Developer Tools。

64530
领券