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

Service Worker和HTTP缓存

很多人,包括我自己,初看Service Worker多一个Cache Storage的时候,就感觉跟HTTP长缓存没什么区别。...例如大家讲的最多的Service Worker能让网页离线使用,但熟悉HTTP缓存的朋友,会发现,把整站所有资源设置为长缓存(不带校验),也可以实现离线使用。...那么,Service Worker缓存方面和HTTP缓存比较,有什么好处呢?...Service worker除了针对PWA(推送和消息)以外,对普通web来说,在缓存方面,能比http缓存带来一些额外的好处。 可以理解为,SW就是浏览器把缓存管理开放一层接口给开发者。...例如缓存比例统计、图片404统计。 4、额外缓存。 HTTP缓存空间有限,容易被冲掉。虽然部分浏览器实现SW的存储也有淘汰机制,但多一层缓存,命中的概率就要更高了。 5、离线处理。

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

Service Worker 缓存文件处理

交代背景 前段时间升级了一波Google Chrome,发现我的JulyNovel站点Ctrl+F5也刷新不了,后来发现是新的Chrome已经支持Service Worker,而我的JulyNovel也满足...之前加载过的css和js都被缓存了。 所以这里是有点小问题的,毕竟我服务器更新了,你service worker 没给我更新缓存,就说不过去了。...Service Worker生命周期的意义 1.实现离线优先(这个不谈,没网也能搞事?这妥妥的Native的能力啊) 2.允许新服务工作线程自行做好运行准备,无需中断当前的服务工作线程。...更新service worker 这里就是解决问题的关键了。...4.在获取更新时遵循(长达 24 小时)服务工作线程脚本上的缓存标头。 我们将创建此选择加入行为,因为它可以发现问题。 在您的服务工作线程脚本上,您可能需要 max-age 为 0。

1.3K30

WorkBox 之底层逻辑Service Worker

如果service worker的内容包含「语法错误」,注册会失败,并丢弃service workerservice worker在一个作用域内运行。...在创建缓存之后,使用其异步的addAll方法「预缓存」一个资源URL数组。 如果传递给event.waitUntil的Promise被「拒绝,安装将失败」。...如果图像在service worker缓存中,则从缓存中提供它。如果没有,从网络获取图像,将响应存储在缓存中,并返回网络响应。 所有其他请求都会通过service worker,不与缓存互动。...当service worker处理fetch请求时,我们「检查fetch事件处理的请求 URL 是否在预缓存资产的数组中」。 如果是,我们从缓存获取资源,并跳过网络。...Service Worker缓存的陷阱 如果将预缓存「应用于太多的资产」,或者如果Service Worker在页面「完成加载关键资产之前」就注册了,那么可能会遇到问题。

29520

JavaScript工作原理(八):Service Workers,生命周期和应用案例

在安装阶段,最好加载和缓存一些静态资源。资源成功缓存后,Service Worker安装完成。如果没有成功(加载失败) – Service Worker将重试。...一旦安装成功,您将知道静态资源位于缓存中。 在安装阶段,最好加载和缓存一些静态资源。资源成功缓存后,Service Worker安装完成。如果没有成功(加载失败) – Service将重试。...一旦安装成功,您将知道静态资产位于缓存中。 如果注册需要在加载事件之后发生,这将回答您的问题。这不是必须的,但它是绝对推荐的。 为什么这样?让我们考虑用户第一次访问您的网络应用程序。...激活 安装Service Worker之后,下一步是将其激活。这一步是管理以前缓存的好机会。 一旦激活,Service Worker将开始控制所有属于其范围的页面。...如果任何文件下载失败,install步骤会失败。所以主要注意你需要缓存的文件。 处理install事件是可选的,你可以避免处理它。在这种情况下,上面三个步骤你都无需处理。

98210

在项目中使用Service Worker 与 PWA

更快的加载速度 通过将资源缓存在本地,Service Worker 可以显著提高 Web 页面的加载速度。它可以从缓存获取资源,而无需每次都从服务器重新下载。 3.....catch(function(error) { console.log('Service Worker 注册失败:', error); }); } // 在 Service...如果成功缓存了所有文件,那么将安装 Service Worker。如果其中的一个文件下载失败,那么安装步骤将失败。如果缓存文件列表过长,将会增大失败的几率。...策略 缓存优先 网络优先 仅使用缓存 仅使用网络 速度优先 一旦安装了 Service Worker 并且用户导航到其他页面或刷新当前页面,Service Worker 将开始监听 fetch 事件。...然后,它会发起远程请求来获取最新资源,将资源缓存起来,并返回给页面。

31610

web渐进式应用PWA

由于允许 Web 应用程序脱机工作的是 Service Worker,这意味着 Service Worker 是渐进式 Web 应用强制要求的部分。...站点中的其他页面即使没有设置 manifest 属性,请求的资源如果在缓存中也从缓存中访问 当 manifest 文件发生改变时,资源请求本身也会触发更新 3.创建一个 Service Worker Service...我们也可以将一些非必要的缓存文件(installFilesDesirable)。这些文件在安装过程中将会被下载,但如果下载失败,不会触发安装失败。...该事件处理函数中,我们可以使用 respondWith()方法来劫持 HTTP 的 GET 请求然后返回: 从缓存中取到的资源文件 如果第一步失败,资源文件将会从网络中使用 Fetch API 来获取(...获取到的资源将会加入到缓存中。 如果第一步和第二步均失败,将会从缓存中返回正确的资源文件。

1.2K10

Service Worker初探

在使用Service Worker之后,第一次访问的时候,可以将我们的静态资源缓存下来,下次访问的时候可以通过Service Worker返回缓存,就可以支持离线访问了。 2....如果在installing中,有任何资源加载失败,都会导致安装失败Service Worker会直接进入废弃状态。...最终返回当前的cache,一般情况下,基于这个cache来操作缓存。 caches.keys() => Primose 这个方法可以获取所有的缓存名称的列表。...在请求失败的情况下,使用的缓存也不一定是正在请求资源的缓存,同样也可以是其他的缺省资源。就像第一个代码示例一样,在html请求失败的情况下,我们可以返回一个断网页面。...Worker中,获取到所有的content,通过Promise.all全部发送。

1.2K20

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

Service Worker 中我们可以做很多事情,比如拦截客户端的请求、向客户端发送消息、向服务器发起请求等等,其中最重要的作用之一就是离线资源缓存。...如果注册失败,可以通过 catch 来捕获错误信息;如果注册成功,可以使用 then 来获取一个 ServiceWorkerRegistration 的实例 参考网易新闻的注册方式: "serviceWorker...这就导致,我们的 SW 开启失败。     ...Worker 的时候,把 scope 设置为非 origin 目录,那么在 service worker 文件中,我无法获取到 Origin 路径对应页面的 client。...如果网络请求失败,那最后被缓存的 Cache 缓存结果就会被返回到客户端,这种策略一般适用于返回结果不太固定或对实时性有要求的请求,为网络请求失败进行兜底。

1.4K20

PWA - 令人惊奇的web用户体验新方法

* 激活( activating ):在这个状态下没有被其他的 Service Worker 控制的客户端,允许当前的 worker 完成安装,并且清除了其他的 worker 以及关联缓存的旧缓存资源,...* 安装 (install) 失败,激活 (activating) 失败 都进入废弃 (redundant) 状态 Service Worker 有几个重要的功能性的的事件 fetch (请求):当浏览器在当前指定的...'), err); } Service Worker 在网页已经关闭的情况下还可以运行, 用来实现页面的缓存和离线, 后台通知等等功能。...service worker 自定义请求响应 处理动态缓存: 每次任何被 Service Worker 控制的资源被请求到时,都会触发 fetch 事件,Service Worker 添加一个 fetch..., 这里用参数 -c-1 # 用另一个终端 ngrok http 8088 注意: Demo 当中如果直接启动 http-server 而不使用 -c-1 关闭缓存, sw.js 可能被缓存住, 导致更新方案失败

2.5K10

PWA 的探索与应用

PWA是在传统Web应用的基础上,结合Manifest和service worker,完善Web应用的一些能力,比如: 添加至主屏幕,点击主屏幕图标可以实现启动动画以及隐藏地址栏 实现离线缓存功能,即使用户手机没有网络...Service Worker 支持的事件 [h8fubjhexm.png] install:Service Worker 安装成功后被触发的事件, 在事件处理函数中可以添加需要缓存的文件 activate...更新的SW线程与现有SW线程一起启动,并获取自己的 install 事件。...Service Worker缓存策略 Service Worker缓存策略大部分在fetch与install时间中定义,对于某些固定不变的静态资源,可以在Service Worker初次安装的...install事件中将其缓存,但资源过大或者网络不佳都会造成资源并未全部下载成功而导致Service Worker安装被中断安装失败

3.1K90

渐进式Web应用(PWA)入门教程(下)

第三步:创建一个 Service Worker Service Worker 是一个可编程的服务器代理,它可以拦截或者响应网络请求。...navigator.serviceWorker.register('/service-worker.js'); } 如果您不需要离线的相关功能,您可以只创建一个 /service-worker.js...我们也可以将一些非必要的缓存文件(installFilesDesirable)。这些文件在安装过程中将会被下载,但如果下载失败,不会触发安装失败。...该事件处理函数中,我们可以使用respondWith()方法来劫持HTTP的GET请求然后返回: 从缓存中取到的资源文件 如果第一步失败,资源文件将会从网络中使用Fetch API来获取(和service...获取到的资源将会加入到缓存中。 如果第一步和第二步均失败,将会从缓存中返回正确的资源文件。

77400

PWA 入门: 写个非常简单的 PWA 页面

然后在 HTML 文件当中引入配置: 添加 Service Worker Service Worker 在网页已经关闭的情况下还可以运行, 用来实现页面的缓存和离线, 后台通知等等功能。...在 Service Worker 当中会用到一些全局变量: self: 表示 Service Worker 作用域, 也是全局变量 caches: 表示缓存 skipWaiting: 表示强制当前处在...借助 Service Worker, 可以在注册完成安装 Service Worker 时, 抓取资源写入缓存: 调用 self.skipWaiting() 方法是为了在页面更新的过程当中, 新的 Service...从 DevTools 可以看到, 普通页面刷新时, 列表当中的静态资源都是从 Service Worker 获取的: 更新页面 页面被缓存之后, 就需要适当处理缓存失效时页面的更新。...注意: Demo 当中如果直接启动 http-server 而不使用 -c-1 关闭缓存, sw.js 可能被缓存住, 导致更新方案失败

2.7K50

渐进式 Web 应用程序介绍

让我们再深入一点…… Service worker Service Worker 负责确保 PWA 可靠且独立于网络状态。...它可以从客户端访问缓存,并可以存储数据,例如不需要反复获取的静态资产,如样式表、html、图像等。这使 PWA 能够在离线模式下仅加载必要的数据. 因此,它可以减少页面加载延迟,也可以提高整体性能。...我们还可以让 service worker 监听网络变化期间发生的事件,并可以动态地服务、修改或拦截应用程序内的网络请求。...简而言之,PWA 的两个主要功能(例如一次性安装和缓存)是使用 Service Worker 脚本完成的。它还可以用于在用户不使用网站时处理推送通知。...HTTPS 由于以下原因,PWA 必须使用 HTTPS 协议提供服务: 1.Service Worker 需要 HTTPS 连接。

1.2K31

PWA 方案相关技术分享

Service Worker 是用 JavaScript 编写的 JS 文件,能够代理请求,并且能够操作浏览器缓存,通过将缓存的内容直接返回,让请求能够瞬间完成。...Service Worker 是运行在浏览器上开辟的一个新线程,浏览器背后悄悄运行的线程,所以没有 window 对象,会使用 self 获取当前运行环境的上下文,即使用 self 来表示全局作用域。...用线把整个流程链接起来: 其中任何一个步骤失败都将进入销毁(redundant)。...Worker 主要操作是: 注册完成安装 Service Worker 时, 抓取资源写入缓存; 网页抓取资源的过程中, 在 Service Worker 可以捕获到 fetch 事件, 编写代码如何响应资源的请求...参考文献: 服务工作线程:简介 Web 技术文档 Web API 接口 ServiceWorker 借助Service Worker和cacheStorage缓存及离线开发 网站渐进式增强体验(PWA)

73620
领券