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

WorkBox 之底层逻辑Service Worker

如果图像在service worker缓存中,则从缓存中提供它。如果没有,从网络获取图像,将响应存储缓存中,并返回网络响应。 所有其他请求都会通过service worker,不与缓存互动。...当service worker处理fetch请求,我们「检查fetch事件处理的请求 URL 是否缓存资产的数组中」。 如果是,我们从缓存中获取资源,并跳过网络。...其他请求将通过网络传递,只经过网络。 2....Service Worker 缓存的陷阱 如果将缓存「应用于太多的资产」,或者如果Service Worker页面「完成加载关键资产之前」就注册了,那么可能会遇到问题。...当Service Worker「安装期间缓存资产,将同时发起一个或多个网络请求」。如果时机不合适,这可能会对用户体验产生问题。

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

2020前端性能优化清单(五)

实际上,这种影响可能是负面的[34],会使网络缓冲区膨胀,阻止文档中真正的数据帧的传输。此外,由于 TCP 启动缓慢,服务器推送热连接上会更有效[35]。...然而,需要仔细检查它是否真的有助于性能,因为加载字体存在一个优先级的难题[78]:由于加载被视为非常重要,它可以跳过甚至更关键的资源,如关键 CSS。...使用 service worker 做缓存和网络降级 在网络上,没有比用户机器上本地存储的缓存更快的了。...通常,一种常见的可靠策略是将应用程序 shell 与几个关键页面一起存储 service worker 的缓存中,比如离线页面、首页和其他重要页面。 不过,有几个问题需要记住。...您是否 CDN/Edge 上使用了 service worker,例如用于 A/B 测试?

1.9K20

关于 Web 缓存的那些风流事儿

另外一种情况就是当浏览器的存储空间不足,他会将整个 Service Worker 缓存还有其他源存储如 indexedDB、localStorage 等都清除掉。...也因此,Service Worker 能确保他的存储和其他源存储是同步的。 Service Worker 只负责特定的域,换言之,他最多只能管理一个 host。...但和 Service Worker 不一样的事,他会在觉得他需要空间来存储更重要或者会被更多人需要的资源,逐个移除那些旧资源。 HTTP 缓存拥有一个基于内存的组件。他负责为请求匹配资源。...浏览器能够为下次导航资源。我们可以通过显示的指令()或者依靠浏览器内部机制完成。这些被的资源会被保存下来直到下次导航,尽管它们可能是不允许缓存的。...所以当资源到达 HTTP 缓存,它会被缓存(并且不需要校验就会被提供)大概五分钟。 尽管 HTTP 缓存看起来十分的严厉,但 Questy 还是鼓起勇气上前询问有没有匹配的资源。

42720

Service Workers - JavaScript API 简介

就像已经指出的定义一样,Service Worker网络代理。 这意味着它们可以控制页面中的所有网络请求,并且可以对其进行编程,使用缓存的进行响应。...我们可以从中得出两个步骤: 缓存 从缓存中处理请求 这两个步骤都利用了Cache API,它由 Web Workers 和浏览器使用,并且为我们提供了用于网络请求的存储机制。...缓存 缓存是一个术语,描述了 Service Worker 处于激活状态之前下载和缓存文件。 它是 Service Worker 生命周期的“install ”步骤中完成的。...;如果是离线状态或请求出错,则降级返回缓存的离线内容。...定期后台同步 正如在引言中已经提到的那样,Service Worker其他服务工作者一个单独的线程上运行,所以即使关闭页面,它们也可以执行其代码。 此功能对于执行后台同步和提供推送通知很重要。

92420

Web 性能优化:Preload,Prefetch的使用及 Chrome 中的优先级

加载(perload)之前,网络请求从这里开始,加载之后,它在解析从左向右移动 ?...这各情况来说是比较少的,但通常来说,会是比较好的情况 —— 如果资源没有超出 HTTP 缓存时间或者 Service Worker 没有主动重新发起请求,那么浏览器就不会再去请求这个资源了。...preload 的文件数量取决于加载其他资源网络内容、用户的带宽和其他网络状况。...prefetch 是否具有你应该注意的任何魔法属性? 是的, Chrome 中,如果用户导航离开一个页面,而对其他页面的请求仍在进行中,这些请求将不会被终止。...当你知道资源的精确加载顺序时使用推送,并让 service worker 拦截可能导致再次推送缓存资源的请求

2K00

瞒不住了,Prefetch 就是一个大谎言

当用户单击 Buy 按钮,浏览器会惰性加载 buy.js 包。根据 bundle 的大小和网络的速度,这可能会引入一个显著的、明显的延迟。那我们能做些什么来改善呢?...考虑到现在大多数东西都是 HTTPS,这有效地禁用了Firefox上的。 一些移动浏览器忽略 prefetch,因为移动浏览器认为这是移动网络上,并试图节省带宽。...因此,prefetch 某些情况下,可能导致多次请求相同的资源。 来自 Console 的警告 最后,如果某些浏览器检测到给定的资源 x 秒内未被使用,则会发出控制台警告。...控制请求,以便在请求尚未在 bundle 中可以解除请求。 简单而言,我们希望从一个被动的执行转变为一个主动控制。 事实证明,service worker 能做到。...Service worker 可以拦截请求并控制缓存中的内容。使用 service worker,我们可以对流程进行正确的控制,还可以了解 chunk 依赖关系图,并可以加载相关代码。

30420

瞒不住了,Prefetch 就是一个大谎言

当用户单击 Buy 按钮,浏览器会惰性加载 buy.js 包。根据 bundle 的大小和网络的速度,这可能会引入一个显著的、明显的延迟。那我们能做些什么来改善呢?...考虑到现在大多数东西都是 HTTPS,这有效地禁用了Firefox上的。一些移动浏览器忽略 prefetch,因为移动浏览器认为这是移动网络上,并试图节省带宽。...因此,prefetch 某些情况下,可能导致多次请求相同的资源。来自 Console 的警告最后,如果某些浏览器检测到给定的资源 x 秒内未被使用,则会发出控制台警告。...控制请求,以便在请求尚未在 bundle 中可以解除请求。简单而言,我们希望从一个被动的执行转变为一个主动控制。事实证明,service worker 能做到。...Service worker 可以拦截请求并控制缓存中的内容。使用 service worker,我们可以对流程进行正确的控制,还可以了解 chunk 依赖关系图,并可以加载相关代码。

66500

现代浏览器探秘(part2):导航

如果将service worker设置为从缓存加载页面,则无需从网络请求数据。 要记住的重要一点是Service Worker渲染器进程中运行的JavaScript代码。...注册Service Worker,将保留Service Worker的范围作为参考(你可以Service Worker生命周期”一文中阅读有关范围的更多信息)。...Service Worker可以从缓存加载数据,无需从网络请求数据,也可以从网络请求新资源。 ? 图10:浏览器进程中的网络线程查找Service Worker范围 ?...图11:浏览器进程中的UI线程启动渲染器进程以处理Service Worker; 然后,渲染器进程中的工作线程从网络请求数据 导航加载 可以看到,如果Service Worker最终决定从网络请求数据...导航加载是一种通过与Service Worker并行加载资源来加速此过程的机制。 它用header标记这些请求,允许服务器为这些请求发送不同的内容,例如:只更新部分数据而不是整个文档。 ?

2K20

Service Worker最佳实践

cache的Service Worker脚本直接从网络。...若网络的与本地有一个字节的差异都会触发Service Worker脚本的更新,更新流程与安装类似,只是更新安装成功后不会立即进入active状态,需要等待旧版本的Service Worker进/线程终止...图3 对于一些较为复杂的页面,往往会有一部分资源使用本地cache,还有一部分仍然需要是调试过程中勾选图2中的3、4来快速达到当前tab页离线和跳过Service Worker拦截。...图8 fetch事件中,拦截前端页面发起的资源请求并到之前缓存的cache中匹配。其中加上容错处理,当发现缓存中无当前所要请求的资源,折回网络请求。...4.2.1 不影响安装的资源缓存 对于某些固定不变的静态资源,我们习惯Service Worker初次安装的install事件中将其缓存,但资源过大或者网络不佳都会造成资源并未全部下载成功而导致Service

2.3K10

2020前端性能优化清单(三)

一旦代码中定义了分割点,Webpack 就可以处理依赖关系和输出文件。它可以让浏览器保持较小的初始下载量,并在应用程序请求按需请求代码。...Web Worker 的典型使用场景是加载数据和渐进式 Web 应用程序[29],这种方式可以预先加载和存储一些数据,以便后续需要使用它。...显然,你可能会让浏览器获取不需要的数据并加载不需要的页面,因此好的做法是对加载的请求数量做好控制。比如检查出来的脚本中经过确认的,或者关键的动作调用进入可视区域进行推测性。...DNStradamus[96] 会对 a 标签出现在可视区对 DNS 进行。...Quicklink 会考虑到数据量,因此它不会在 2G 或 Data-Saver 启用状态下,Instant.page 将模式设置为使用 viewport prefetching(默认设置)也是如此

2.1K20

Web性能优化_知识点精讲

共享工作线程Shared Web Worker 服务工作线程Service Worker: 主要用途是「拦截」、「重定向」和「修改页面发出的请求」,充当「网络请求」的仲裁者的角色 专用工作线程Dedicated...本地缓存一般包括强缓存和协商缓存两种形式 「强缓存」是指浏览器加载资源,根据请求头的 expires/cache-control,判断是否命中客户端缓存。 如果命中,则直接从缓存读取资源。...Delivery Network,内容分发网络) 接口缓存 Service Worker 是浏览器的一个高级属性,本质上是一个「请求代理层」。...,先去缓存里面数据,如果没有的话,再向服务器发起请求 CDN 通过在网络各处放置节点服务器,构造一个「智能虚拟网络」。...,是指网站资源迁移到其他位置后,用户访问站点,程序自动将用户请求从一个页面转移到另外一个页面的过程。

1.3K20

2020前端性能优化清单(三)

一旦代码中定义了分割点,Webpack 就可以处理依赖关系和输出文件。它可以让浏览器保持较小的初始下载量,并在应用程序请求按需请求代码。...Web Worker 的典型使用场景是加载数据和渐进式 Web 应用程序[29],这种方式可以预先加载和存储一些数据,以便后续需要使用它。...公开鼓励团队不要使用这个库,并确保 CI 在这个库收到拉请求向开发人员发出警报。polyfills 可以帮助使用了标准浏览器特性的老旧代码过渡到重写的代码。...显然,你可能会让浏览器获取不需要的数据并加载不需要的页面,因此好的做法是对加载的请求数量做好控制。比如检查出来的脚本中经过确认的,或者关键的动作调用进入可视区域进行推测性。...DNStradamus[96] 会对 a 标签出现在可视区对 DNS 进行

2K10

如何进行渗透测试XSS跨站攻击检测

-- chrome --> 另外,不是所有的页面都能够被加载,当资源类型如下,讲阻止加载操作: URL中包含下载资源 页面中包含音频、视频 POST、PUT和DELET操作的ajax请求 HTTP...其他 CND Bypass,如果网站信任了某个CDN, 那么可利用相应的CDN bypass Angular versions =1.5.0,存在漏洞 Git Pull Request...Service Worker Service Worker可以拦截http请求,起到类似本地代理的作用,故可以使用Service Worker Hook一些请求,在请求中返回攻击代码,以实现持久化攻击的目的...Chrome中,可通过 chrome://inspect/#service-workers 来查看Service Worker的状态,并进行停止。 3.2.10.3....AppCache 可控的网络环境下(公共wifi),可以使用AppCache机制,来强制存储一些Payload,未清除的情况下,用户访问站点对应的payload会一直存在。

2.6K30

前端高频面试题汇总(二)

Service Worker的理解Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用 Service Worker的话,传输协议必须为 HTTPS。...因为 Service Worker 中涉及到请求拦截,所以必须使用 HTTPS 协议来保障安全。...Service Worker 实现缓存功能一般分为三个步骤:首先需要先注册 Service Worker,然后监听到 install 事件以后就可以缓存需要的文件,那么在下次用户访问的时候就可以通过拦截请求的方式查询是否存在缓存...请求和保持条件:当进程因请求资源而阻塞,对已获得的资源保持不放。不剥夺条件:进程已获得的资源未使用完之前,不能剥夺,只能在使用完由自己释放。...加载指的是将所需的资源提前请求加载到本地,这样后面需要用到时就直接从缓存取资源。 通过加载能够减少用户的等待时间,提高用户的体验。

55120

构建更快的 Web 体验 - 使用 postTask 调度器

例如,处理轮播图,我们可以使用 postTask 调度器将图像加载任务放入低优先级队列中,以确保关键任务得到优先处理。...它们被优先执行,可能会导致其他计划任务的延迟。不要暂停是一种优先级,用于长时间运行的任务,这些任务执行过程中不应中断或暂停。这也可能会导致其他计划任务的延迟。...图片轮播加载的触发时机: 列表屏幕上显示大约 50% 延迟一秒;如果用户仍在查看它,则在轮播中加载下一张图片 如果用户滑动图像,则加载下三张图像,每张图片之间间隔 100ms 如果轮播一秒计时器结束之前的任何时候离开视口...将网络资源分阶段载入 我们需要实现的最后一个要求是,在用户滑动轮播图后,每个图像请求之间间隔 100 毫秒。让我们看看如何使用 postTask 调度程序修改现有代码以应对这种情况。...让我们看看如何在后台 load 事件触发后延迟 5s 加载我们的 service worker 在这里,我们可以看到如何使用 postTask 调度程序来延迟加载我们的 service worker

9310

高性能前端架构解决方案

让你的网站变慢的不一定是阻止渲染的请求数量。...使用 service workers 跳过网络 service workers 允许你在请求进入网络之前拦截它们。这意味着你可以实现瞬时首屏渲染! 当然,这只在你不需要网络发送响应时才有效。...另外,使用加载有时会适得其反,因为加载其他更重要的文件可能会延迟。 加载页面数据 你的应用程序可能是用来显示一些数据的。下面是一些提示,你可以使用这些提示尽早加载数据并避免呈现延迟。...资源 如果你加载了下一页所需的代码,则可以消除用户启动导航的延迟。...请注意,如果你的实体经常被其他用户编辑,并且你下载的数据可能已经过期,那么这种方法将不起作用。在这些情况下,获取最新数据,请首先考虑以只读方式显示现有数据。

2.9K10

谷歌Chrome浏览器新功能亮相,可有效抵御黑客攻击

当网站尝试连接局域网内其他设备,Chrome 将会确认连接来源的安全性以及目标设备是否允许此类连接。...检查的内容包括验证请求是否来自安全环境,同时发送初步请求,通过称为 CORS 请求的特定请求,查看网站 B(例如环回地址上运行的 HTTP 服务器或路由器的网络面板)是否允许从公共网站访问。...与现有的子资源和 Worker 保护不同,该功能专门针对导航请求。其主要目的是保护用户的私人网络免受潜在威胁。...server1=123.123.123.123"> (右滑查看更多) 当浏览器检测到公共网站试图连接到内部设备,浏览器将首先向该设备发送请求。如果没有回应,连接将被阻止。...这样向内部网络设备发出的请求就会被自动阻止,除非该设备明确允许从公共网站进行连接。 警告阶段,即使检查失败,该功能也不会阻止请求

12710
领券