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

PWA [sw-toolbox]:如何缓存所有资源的离线页面?

PWA(Progressive Web App)是一种使用现代 Web 技术构建的应用程序,具有类似原生应用的用户体验。它可以在各种设备和平台上运行,无需下载和安装,通过浏览器即可访问。

在 PWA 中,可以使用 sw-toolbox(Service Worker Toolbox)来缓存所有资源的离线页面。sw-toolbox 是一个用于创建和管理 Service Worker 的 JavaScript 库,它提供了一组工具和方法,用于缓存和处理离线资源。

以下是缓存所有资源的离线页面的步骤:

  1. 注册 Service Worker:在网页的 JavaScript 文件中,使用 sw-toolbox 注册一个 Service Worker。Service Worker 是一个在后台运行的脚本,用于拦截网络请求并缓存资源。
  2. 缓存资源:在 Service Worker 的安装事件中,使用 sw-toolbox 的 toolbox.precache() 方法来缓存所有需要离线访问的资源。该方法接受一个资源列表作为参数,可以是 HTML、CSS、JavaScript、图像等文件。
  3. 拦截请求:在 Service Worker 的 fetch 事件中,使用 sw-toolbox 的 toolbox.networkFirst()toolbox.cacheFirst() 方法来拦截网络请求并返回缓存的资源。networkFirst() 方法优先从网络获取资源,如果网络不可用,则返回缓存的资源;cacheFirst() 方法优先从缓存获取资源,如果缓存中不存在,则从网络获取。

通过以上步骤,可以实现 PWA 的离线访问功能,即使用户处于无网络环境,也能够加载并展示缓存的离线页面。

腾讯云提供了一系列与 PWA 相关的产品和服务,例如:

  1. 腾讯云 CDN(内容分发网络):用于加速静态资源的分发,提高 PWA 的加载速度。详情请参考:腾讯云 CDN 产品介绍
  2. 腾讯云云开发:提供了云函数和云数据库等服务,可用于构建 PWA 的后端逻辑和数据存储。详情请参考:腾讯云云开发产品介绍
  3. 腾讯云 COS(对象存储):用于存储 PWA 中的静态资源文件,如图片、音视频等。详情请参考:腾讯云 COS 产品介绍

请注意,以上仅为腾讯云相关产品的示例,其他云计算品牌商也提供类似的产品和服务,可根据具体需求选择适合的解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PWA实战:如何为你网站增加离线功能和推送通知》

摘要 猫头虎博主 为您解读:PWA(Progressive Web Apps)强大功能如何为您网站带来革命性用户体验。我们将探讨离线功能和推送通知实现,以及如何利用这些特性提高用户留存。...PWA入门、离线功能实现、推送通知技巧、提高用户留存。 引言 随着web技术发展,PWA为网站提供了近乎原生应用体验。...其中,离线功能和推送通知成为PWA核心特性,大大提高了用户互动性和留存率。本文将为您揭示这两大功能实现细节。 正文 1....离线功能:Service Workers魔法 Service Workers是运行在浏览器后台JavaScript脚本,它可以拦截和处理网络请求,以及管理缓存。...PWA优点和局限性 PWA为网站提供了强大功能,但同时也有其局限性,例如不支持所有的浏览器和平台。

24610

该用什么姿势来使用 PWA

大家都知道就不卖关子了,其实就是一个 Cache 说到 Cache,就一定会想到性能优化了,请看我们第二部分 2. 首屏优化 2.1. 静态资源优化 如何利用 Cache 来进行优化?...,我们都会把整个站点所有资源都加载回来并缓存 当用户跳转另外一个页面的时候,Cache 里面就有相应资源了!...缓存 cgi 数据流程和缓存静态资源流程主要有2个差别,上图标红地方: 需要添加一个开关功能,因为不是所有 cgi 都需要缓存!...替代离线PWA离线包本质上是一样,都是离线缓存 正好,我们 PC 客户端离线包系统年久失修,在这个契机下,我们启动了使用 PWA 替换离线方案!...核心流程不变,基本和缓存静态资源流程是一致 但是离线包系统是非常成熟系统,要完全替换掉它还需要考虑许多方面的问题。 3.1.

71920

带你走进PWA在业务中实践方案

大家都知道就不卖关子了,其实就是一个 Cache 说到 Cache,就一定会想到性能优化了,请看我们第二部分 2. 首屏优化 2.1. 静态资源优化 如何利用 Cache 来进行优化?...这样做结果就是,无论用户第一次进入到我们站点哪个页面,我们都会把整个站点所有资源都加载回来并缓存 当用户跳转另外一个页面的时候,Cache 里面就有相应资源了!...缓存 cgi 数据流程和缓存静态资源流程主要有2个差别,上图标红地方: 需要添加一个开关功能,因为不是所有 cgi 都需要缓存!...替代离线PWA离线包本质上是一样,都是离线缓存 正好,我们 PC 客户端离线包系统年久失修,在这个契机下,我们启动了使用 PWA 替换离线方案!...核心流程不变,基本和缓存静态资源流程是一致 但是离线包系统是非常成熟系统,要完全替换掉它还需要考虑许多方面的问题。 3.1.

60030

【性能】688- 前端性能优化——从 10 多秒到 1.05 秒

缓存 缓存会根据请求保存输出内容副本,例如 页面、图片、文件,当下一个请求来到时候:如果是相同 URL,缓存直接使 用本地副本响应访问请求,而不是向源服务器再次发送请求。...no-store: 直接禁止游览器缓存数据,每次用户请求该资源,都会向服务器发送一个请求,每次都会下载完整资源。 public: 可以被所有的用户缓存,包括终端用户和 CDN 等中间代理服务器。...Service Worker 可以使你应用先访问本地缓存资源,所以在离线状态时,在没有通过网络接收到更多数据前,仍可以提供基本功能(一般称之为 Offline First)。...install 事件一般是被用来填充你浏览器离线缓存能力。...install callback 中,我们需要执行以下步骤: 开启一个缓存 缓存我们文件 决定是否所有资源是否要被缓存 上面的代码中,我们通过 caches.open 打开我们指定 cache 文件名

1.3K21

PWA 那些事儿

最主要特点 在页面中注册并安装成功后,运行于浏览器后台,不受页面刷新影响,可以监听和截拦作用域范围内所有页面的 HTTP 请求。 网站必须使用 HTTPS。...反过来,浏览器可以缓存资源,并且只有在有效期满后才会再次检查新版本。 使用 HTTP 缓存意味着你要依赖服务器来告诉你何时缓存资源和何时过期。...service worker 缓存 Service Workers 强大在于它们拦截 HTTP 请求能力 进入任何传入 HTTP 请求,并决定想要如何响应。...在你 Service Worker 中,可以编写逻辑来决定想要缓存资源,以及需要满足什么条件和资源需要缓存多久。一切尽归你掌控!...3.2.3 实现离线缓存 index.html 注:Service Worker 注册路径决定了其 scope 默认作用页面的范围。

1.7K00

未来大前端技术趋势深度解读

缓存使用:native app 主要是对 sqlite 缓存,以及文件读写操作,而 PWA缓存数据库操作支持非常好,足以应对各种场景。 基本能力补齐,比如推送。...现在 PWA 已经支持很好了,唯一麻烦缓存策略和发版比较麻烦,应用轻量化趋势已经很明朗了。下面讲一下 PWA 一些关键点。 1....在 Workbox 之前,Google Chrome 团队较早时间推出过 sw-precache 和 sw-toolbox 库,但骂声很多,直到 Workbox 才真正诞生了能方便统一处理离线能力更完美的方案...就算你不考虑离线能力,它也能让你站点访问速度更快。(个人觉得这个很6b,大家可以去试试) ? 比如星巴克 PWA 应用,对缓存应用高达 41.3mb。这是浏览器端非常大突破,尽管没啥新技术。...PWA 必然会改变前端与移动端之间格局,再加之 AOT(ahead-of-time) 与 WebAssembly 为 JS 带来性能上突破,JavaScript 将撼动所有领域,从移动端(PWA

2.1K20

饿了么 PWA 升级实践

那么当这些资源被真正请求时,它们可能已经下载好并存在在缓存中了,这样就加快了初始路由所有依赖就绪。 在多页应用中,每一个路由本来就只会请求这个路由所需要资源,并且通常依赖也都比较扁平。...你可以将这些“关键路由”依赖理解为我们整个应用 “App Shell” 或者说“安装包”。一旦它们都被缓存,或者说成功安装,无论用户是在线离线,我们 web 应用都可以从缓存中直接启动。...对于那些并不那么重要路由,我们则采取在运行时增量缓存方式。我们使用 SW-Toolbox 提供了 LRU 替换策略与 TTL 失效机制,可以保证我们应用不会超过浏览器缓存配额。 4....而对于再次访问,由于所有资源都直接来自于 Service Worker 缓存页面可以在 1 秒左右就达到可交互状态了。 但是,故事并不是这么简单得就结束了。...我们不是已经用 Service Worker 缓存所有资源了吗,怎么还会这样呢?

1.6K40

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

随后添加上 App Manifest 和 Service Worker 来实现 PWA 安装和离线等功能。...然后在 HTML 文件当中引入配置: 添加 Service Worker Service Worker 在网页已经关闭情况下还可以运行, 用来实现页面缓存离线, 后台通知等等功能。...处理动态缓存 网页抓取资源过程中, 在 Service Worker 可以捕获到 fetch 事件, 可以编写代码决定如何响应资源请求: 真实项目当中, 可以根据资源类型, 站点特点, 可以专门设计复杂策略...更新静态资源 缓存资源随着版本更新会过期, 所以会根据缓存字符串名称(这里变量为 cacheStorageKey, 值用了 "minimal-pwa-1")清除旧缓存, 可以遍历所有缓存名称逐一判断决决定是否清除...从 DevTools 可以看到, 普通页面刷新时, 列表当中静态资源都是从 Service Worker 获取: 更新页面 页面缓存之后, 就需要适当处理缓存失效时页面的更新。

2.7K50

PWA 实践应用(Google Workbox)

支持缓存离线访问,Service Worker。 除了正常静态资源以外,Twitter 把首页也缓存了下来。...当一起使用 Service Worker 和 CacheStorage API 时,可以控制网站上使用资源(HTML、CSS、JS、图像等)如何从网络或缓存中请求,甚至允许在离线时返回缓存内容。...有许多资源是非常适合预缓存:Web 应用程序起始 URL、离线回退页面以及关键 JavaScript 和 CSS 文件。...离线回退 让 Web 应用在离线工作时感觉更健壮常见模式是提供一个后退页面,而不是显示浏览器默认错误页面。通过 Workbox 路由和预缓存,你可以在几行代码中设置这个模式。...,则返回缓存离线页面的内容,而不是生成一个浏览器错误。

1.5K40

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

上篇文章我们对渐进式Web应用(PWA)做了一些基本介绍。 渐进式Web应用(PWA)入门教程(上) 在这一节中,我们将介绍PWA原理是什么,它是如何开始工作。...其中会显示worker中发生错误,还可以强制刷新,也可以让浏览器进入离线模式。 Cache Storage 部分例举了当前所有已经缓存资源。你可以在缓存需要更新时候点击refresh按钮。...缓存过大 你不能将您网站中所有内容缓存下来。对于小一些网站来说缓存所有内容并不是一个问题,但是如果一个网站包含了上千个页面呢?很明显不是所有人对网站中所有内容都感兴趣。...存储是有限制,如果您将所有访问过页面缓存下来的话,缓存大小会增长额很快。 你可以这样制定你缓存策略: 只缓存重要页面,比如主页,联系人页面和最近浏览文章页面。...当用户处于离线状态时,这很好,但是如果用户处于在线状态,那他只会浏览到比较老旧页面。 各种资源比如图片和视频不会改变,所以一般都把这些静态资源设置为长期缓存

78000

如何使用浏览器工具调试PWA

如何使用浏览器开发工具调试 PWA(Progressive Web Apps) ? 本教程说明了Chrome和Firefox开发工具展示了什么样工具,用于帮助用户调试PWA。...什么是PWA 首先,一个PWA是一个根据设备支持情况,提供了额外特性应用,比如: 离线工作能力 推送通知 几乎原生应用展现和速度 资源本地和缓存 但是PWA并不能在不支持最新技术设备上像正常网站那样工作...这个面板把所有Web应用程序区别于Web网页特点都集合在一起。稍后,我们将详细解释。 ? 一个实际例子 本教程完整探索了一个PWA,这个PWA可以这里获得。...Service Workers技术使得PWA可以离线工作,同时允许您拦截网络请求并使用Cache API在本地存储资源。 ? 通过此屏幕,您可以通过启用选项卡中离线复选框来强制离线模式: ?...当加载Service Workers使用Cache API缓存资源时,DevTools网络面板显示为来自Service Workers: ? Firefox如何

3.6K40

构建离线web应用(一)

如果想让用户在离线场景下依然保持打开 web 页面,你需要在用户打开 web 应用并且有网络连接时做一些“后台任务”,这个“后台任务”会搜集 web 页面最近一次运行需要一些资源,以备离线时使用。...它采用 JavaScript 控制关联页面或者网站,拦截并修改访问和资源请求,细粒度地缓存资源。你可以完全控制应用在特定情形(最常见情形是网络不可用)下表现。...我将它们分成三类: 离线情况下不做任何操作 例子: Coinbase ? Coinbase 就是一直停留在 loading 这个页面。...由于这是生命周期第一步,最好在这一步缓存各种资源: // ....根据名称点击你所设置cache,然后你就会看到缓存里面的各个项: ? 接下来 你已经了解了必备知识点,PWA 概念对你来说已经不陌生了。接下来,我们将要讨论 PWA 缓存策略。

1.6K100

PWA 实践应用(Google Workbox)

支持缓存离线访问,Service Worker。 除了正常静态资源以外,Twitter 把首页也缓存了下来。 离线状态下有很好用户体验,而不是显示默认浏览器页面。...当一起使用 Service Worker 和 CacheStorage API 时,可以控制网站上使用资源(HTML、CSS、JS、图像等)如何从网络或缓存中请求,甚至允许在离线时返回缓存内容。...有许多资源是非常适合预缓存:Web 应用程序起始 URL、离线回退页面以及关键 JavaScript 和 CSS 文件。...离线回退 让 Web 应用在离线工作时感觉更健壮常见模式是提供一个后退页面,而不是显示浏览器默认错误页面。通过 Workbox 路由和预缓存,你可以在几行代码中设置这个模式。...,则返回缓存离线页面的内容,而不是生成一个浏览器错误。

17910

在项目中使用Service Worker 与 PWA

离线支持 Service Worker 可以缓存 Web 应用程序资源,使其在断网或低网络质量环境下仍能够加载和运行。这意味着用户可以随时访问应用程序,无需依赖网络连接。 2....更快加载速度 通过将资源缓存在本地,Service Worker 可以显著提高 Web 页面的加载速度。它可以从缓存中获取资源,而无需每次都从服务器重新下载。 3....然后,在 Service Worker 中,我们通过监听 install 事件来缓存这些资源,并在 fetch 事件中拦截网络请求,从缓存中返回资源。这样,即使在离线时,页面仍能够加载所需资源。...然后,它会发起远程请求来获取最新资源,将资源缓存起来,并返回给页面。...优点 渐进性 PWA 适用于所有浏览器,因为它是以渐进性增强作为宗旨开发,用户无需担心浏览器兼容性问题。

37310

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

环境下才能工作 异步实现,内部大都是通过 Promise 实 Service Worker 缓存机制是依赖 Cache API 实现 依赖 HTML5 fetch API 运行于浏览器后台,可以控制打开作用域范围下所有页面请求..., 用来实现页面缓存离线, 后台通知等等功能。...接下来看一下sw.js 主要做这几件事情: 首先安装时会触发 install 事件,监听该事件可执行安装时要做事情。示例中是缓存用于离线时使用静态资源,这也是最常见行为....版本更新 更新静态资源:缓存资源随着版本更新会过期, 所以会根据缓存字符串名称(这里变量为 cacheStorageKey, 值用了 "minimal-pwa-1")清除旧缓存, 可以遍历所有缓存名称逐一判断决决定是否清除...直到所有已打开页面都关闭,旧 Service Worker 自动停止,新 Service Worker 才会在接下来重新打开页面里生效 自动更新所有页面 self.addEventListener

2.5K10

PWA:可能是成本最低站点加速方式

相比原生应用开发而言,Web 应用程序开发和更新维护则显得不要太轻松,真正实现了“一遍更新所有客户端适用”。如果要从性能和可调用设备资源来看,可能以前原生应用要占上风。...配置 PWA   从上面列举 PWA 好处,我们可以很显然知道:PWA 离线缓存、原生式体验、搜索引擎友好这些优点都能用于实现站点加速。...' 链接到页面   当上面的内容都设置好后,我们还需将 manifest.json 声明配置加入到网站所有页面,内容如下所示。...PWA 应用,而实际 PWA 离线缓存等特性都还没有实现,这些都是在 Service Worker 中实现。...据个人不完全统计,本站目前所有代码加上所有图床托管图片总体大小在 15 MB 左右。即使全站都缓存下来,也不可能用到 400 MB。

1K30

PWA离线缓存(一)

离线缓存 :通过Service Worker使得 Web App 也可以做到像 Native App 那样可以离线使用、消息推送功能。...使用service worker有几点注意: 页面必须基于https 独立于当前网页进程,不会对主线程造成影响 不能操作DOM,但可以通过postMessage与页面通信 可以拦截作用域范围内所有请求...离线资源更新 1、如果业务静态资源更新了, 需要修改sw.js文件,一个B修改都会引起浏览器重新下载sw文件, 然后触发install , 装载新离线资源。...必须关闭当前sw控制所有页面,然后再访问当前页面才能使新sw激活。 比较麻烦。 解决办法是 使用 self.skipWaiting();来跳过等待,直接使用新sw激活。...我们做资源缓存, 发布文件后不能要求用户一定刷新页面, 如果停留在一个页面较长时间, 但仍然想使用新缓存资源,该怎么做呢?

1.8K21

ASP.NET Core Blazor Webassembly 之 渐进式应用(PWA)

在多年以前Firefox OS生态系统中离线运行和安装web应用已经成为了可能。 PWAs, 不但如此,更是提供了所有的甚至是更多特性,来让web更加优秀。...我们可以用它来完成一些功能,比如对所有的fetch/xhr请求进行过滤,哪些请求走缓存,哪些不走缓存;比如在后台偷偷给你拉一些数据缓存起来。 // Caution!...修改service-worker 离线原理也很简单,就是请求数据都缓存起来,一般是缓存Get请求,比如各种页面图片等。...为了能缓存页面,显然必须先在线运行成功一次。 模拟离线 当我们修改完上面的js,然后在线正常一次后,可以看到所有GET请求资源都被缓存起来了。 ?...我们可以用chrome来模拟离线情况: ? 选择offline模式,然后刷新我们页面,如果依然可以正常运行则表示可以离线运行。 ? 总结 使用Blazor可以快速开发PWA应用。

1.2K20

【腾讯云前端性能优化大赛】前端性能和加载体验优化实践(附:PWA离线包、内存优化、预渲染)

支持缓存离线访问,Service Worker。 除了正常静态资源以外,Twitter 把首页也缓存了下来。...当一起使用 Service Worker 和 CacheStorage API 时,可以控制网站上使用资源(HTML、CSS、JS、图像等)如何从网络或缓存中请求,甚至允许在离线时返回缓存内容。...有许多资源是非常适合预缓存:Web 应用程序起始 URL、离线回退页面以及关键 JavaScript 和 CSS 文件。...,则返回缓存离线页面的内容,而不是生成一个浏览器错误。...附录 C 客户端离线包支持 为了解决客户端缓存滞后问题,离线包方式是一种提前下载页面资源方式。缺点是占用用户更多流量,优点是能够实现真正意义上页面“秒开”。

2.7K121
领券