3.1.1 什么是 Workbox Workbox 是一组库,可以帮助开发者编写 Service Worker,通过 CacheStorage API 缓存资源。...当一起使用 Service Worker 和 CacheStorage API 时,可以控制网站上使用的资源(HTML、CSS、JS、图像等)如何从网络或缓存中请求,甚至允许在离线时返回缓存的内容。...使用 Stale While Revalidate strategy 缓存 CSS、JavaScript 和 Web Worker,将缓存的资源存储在一个名为 assets 的缓存中。...采用缓存优先的策略来缓存图像,将缓存的图像存储在名为 images 的缓存中,30 天过期,并且一次只允许 50 个。...通过 Workbox 路由和预缓存,你可以在几行代码中设置这个模式。
Service Worker,通过 CacheStorage API 缓存资源。...当一起使用 Service Worker 和 CacheStorage API 时,可以控制网站上使用的资源(HTML、CSS、JS、图像等)如何从网络或缓存中请求,甚至允许在离线时返回缓存的内容。...使用 Stale While Revalidate strategy 缓存 CSS、JavaScript 和 Web Worker,将缓存的资源存储在一个名为 assets 的缓存中。...采用缓存优先的策略来缓存图像,将缓存的图像存储在名为 images 的缓存中,30 天过期,并且一次只允许 50 个。...通过 Workbox 路由和预缓存,你可以在几行代码中设置这个模式。
Workbox 是一组库,可以帮助开发者编写 Service Worker,通过 CacheStorage API 缓存资源。...当一起使用 Service Worker 和 CacheStorage API 时,可以控制网站上使用的资源(HTML、CSS、JS、图像等)如何从网络或缓存中请求,甚至允许在离线时返回缓存的内容。...Worker 使用一个网络优先的策略来缓存导航请求(用于新的 HTML 页面),当它状态码为 200 时,该策略将缓存的页面存储在一个名为 pages 的缓存中。...使用 Stale While Revalidate strategy 缓存 CSS、JavaScript 和 Web Worker,将缓存的资源存储在一个名为 assets 的缓存中。...采用缓存优先的策略来缓存图像,将缓存的图像存储在名为 images 的缓存中,30 天过期,并且一次只允许 50 个。 3.
Progressive Web Apps (PWA) 的离线优先策略是通过Service Worker和Cache API实现的,它允许在没有网络连接时仍然可以访问网站的部分或全部内容。1....更新策略:当有新版本的应用时,需要更新Service Worker和缓存内容。...然后,在Service Worker中预缓存App Shell:const appShellUrls = [ '/app-shell.html', '/app-style.css', // 其他App...使用Service Worker拦截网络请求Service Worker还可以用于拦截特定类型的网络请求,例如API调用。...集成WebSocket支持如果你的应用使用WebSocket进行实时通信,可以使用workbox-websocket库在Service Worker中处理WebSocket连接,确保在离线时能够接收和发送消息
支持缓存和离线访问,Service Worker。...Worker A.3.1.1 什么是 Workbox Workbox 是一组库,可以帮助开发者编写 Service Worker,通过 CacheStorage API 缓存资源。...当一起使用 Service Worker 和 CacheStorage API 时,可以控制网站上使用的资源(HTML、CSS、JS、图像等)如何从网络或缓存中请求,甚至允许在离线时返回缓存的内容。...使用 Stale While Revalidate strategy 缓存 CSS、JavaScript 和 Web Worker,将缓存的资源存储在一个名为 assets 的缓存中。...采用缓存优先的策略来缓存图像,将缓存的图像存储在名为 images 的缓存中,30 天过期,并且一次只允许 50 个。
(已经在筹划准备中....) ❞ Cache API ❝Cache API为缓存的 Request / Response 对象对提供存储机制。...Cache.add和Cache.put用于将「网络响应」存储在service worker缓存中。 Cache.match用于查找 Cache 实例中的缓存响应。...如果图像在service worker缓存中,则从缓存中提供它。如果没有,从网络获取图像,将响应存储在缓存中,并返回网络响应。 所有其他请求都会通过service worker,不与缓存互动。...模拟存储配额 在拥有大量大型静态资产(如高分辨率图像)的网站中,可能会触及存储配额。当这种情况发生时,浏览器将从缓存中驱逐它认为过时或值得牺牲以腾出空间以容纳新资产的项目。...处理存储配额应该是Service Worker开发的一部分,而 Workbox 使这个过程比自行管理更简单。不管是否使用 Workbox,模拟自定义存储配额以测试缓存管理逻辑可能是一个不错的主意。
Service Worker Service Worker本质上也是浏览器缓存资源用的,只不过他不仅仅是cache,也是通过worker的方式来进一步优化。...调试方法 一个网站是否启用Service Worker,可以通过开发者工具中的Application来查看: ?...被Service Worker缓存的文件,可以在Network中看到Size项为 from ServiceWorker: ?...workbox加载失败'); } 然后需要在使用其他的api前,提前使用配置 //关闭控制台中的输出 workbox.setConfig({ debug: false }); 也可以统一指定存储时cache...工作原理 首次加载Web应用程序时,workbox会下载指定的资源,并存储具体内容和相关修订的信息在indexedDB中。
在 Service Worker 中我们可以做很多事情,比如拦截客户端的请求、向客户端发送消息、向服务器发起请求等等,其中最重要的作用之一就是离线资源缓存。...推荐阅读《html5离线缓存manifest详解》、《HTML5离线存储实战之manifest的那些坑》 Service Worker本质上也是浏览器缓存资源用的,只不过他不仅仅是cache,也是通过...他们还将允许访问推送通知和后台同步API。 Service worker运行在worker上下文,因此它不能访问DOM。...相对于驱动应用的主JavaScript线程,它运行在其他线程中,所以不会造成阻塞。它设计为完全异步,同步API(如XHR和localStorage)不能在service worker中使用。...activated阶段可以做很多有意义的事情,比如更新存储在cache中的key和value: var CACHE_PREFIX = 'cms-sw-cache'; var CACHE_VERSION
对于缓存,我们并不陌生,但是我们想有主观意识的缓存,我想缓存什么,缓存多久,缓存和请求资源的策略是什么都有自己来定,service worker 能帮我们做到。...,通过以下代码就能完成应用中 service worker 的注册,后面关于 service worker 相关的处理,在 sw.js 文件中进行。...worker 注册成功 到这里完成了,完成了 service worker 的注册,关于其相关的配置和处理,我们一起去 sw.js 文件中定义吧!...Google推出的、标准统一api操作的、基于 service worker 的策略缓存库,它有以下几点让人称赞的特点 1.Precaching2.Runtime caching3.Strategies4...开始使用Workbox Workbox 定义了标准统一API,我们来看如何借助它提供的API逐步优化项目 路由请求定义缓存 在 Workbox 中,最核心的概念要数基于路由的策略缓存了,这里抓住两个关键词
它集成了 Webpack 的打包流程,可以自动生成和管理 Service Worker,帮助开发者轻松为应用添加离线缓存能力。2....Service Worker 文件可以包含更多的控制逻辑和策略,而不依赖 Workbox 自动生成的 Service Worker。5....缓存策略详解Workbox 支持多种缓存策略,每种策略适用于不同的资源类型和场景。CacheFirst:优先使用缓存,只有在缓存中没有找到资源时才会从网络获取。...{handler: 'CacheFirst',}NetworkFirst:优先从网络获取资源,只有在网络不可用时才会从缓存中读取数据,适合动态数据或 API 请求。...实践中的常见问题缓存爆炸:由于缓存的资源过多,导致缓存空间占满。可以通过 maxEntries 和 maxAgeSeconds 控制缓存的大小和生命周期。
目前常见的缓存方式有http缓存、memory cache、disk cahce、localstorage、Service worker缓存等方式,本文介绍的Workbox就是实现Service worker...那么问题来了,Service worker离线缓存和传统的缓存方式对比,有什么优势和劣势呢,service worker之所以越来越流行,是因为它让前端缓存脱离了服务端,不需要服务端再额外做些什么,前端工程师自己就可以实现缓存...和 workbox.core.cacheNames.runtime 获取当前定义的预缓存和动态缓存名称。...) 更多配置下信息请参考官方文配置文档 预缓存功能 预缓存功能可以在service worker安装前将一些静态文件提前缓存下来,这样就能保证service worker安装后可以直接存缓存中获取这些静态资源...service worker开发 通过workbox-webpack-plugin可以将workbox引入到现有的用webpack构建的项目中 本文对workbox的接口的解释较少,需要各位去官网查阅api
那么我们如何缓存呢?这里就不讲什么协商缓存和强缓存了,这种网上太多了,不再赘述,这次讲另一种缓存,使用Service Worker。...-- MDN SW(以下Service Worker都简称SW)是一个比较新的API,它主要是用来解决离线情况下,使用本地缓存的资源来加载web程序。...在实例的时候还可以填入一些 options,比如cacheName和plugins,cacheName后面会反映到本地cache Api中存储的地方,plugins可以提供一些额外的功能,比如这里,我们希望每次缓存的资源都是...5.4、Service Worker小结 SW这个东西呢,我觉得属于是缓存方面功能的天花板,它可以灵活的定义缓存的项目,缓存的时机等,也可以操作缓存的内容而达到一些其他的目的。...参考文献 Web 字体简介: TTF, OTF, WOFF, EOT & SVG 按需引入element-ui Vue 3, PWA & service worker Workbox get started
vite-plugin-pwa 是一个专门为 Vite 项目打造的 PWA(Progressive Web App)插件,它可以非常方便地帮你: 自动生成 service worker ✨ 自动注册和更新...service worker ️ 生成 manifest.webmanifest 支持缓存策略、离线访问、推送通知等高级功能 GitHub 地址 vite-plugin-pwa 2....支持 Workbox 的所有缓存策略,比如: CacheFirst NetworkFirst StaleWhileRevalidate 高级玩法 workbox: { runtimeCaching...进阶功能 除了上面的基本功能外,还支持: 多语言 manifest: 根据请求语言动态切换 manifest 预缓存(precache):配置哪些文件在安装时就缓存 ️ 定制 Service Worker...今天的分享就这些了,感谢大家的阅读,如果文章中存在错误的地方欢迎指正!
(CDN Mode) 其实很简单, 项目根目录放置一段 service-worker 的入口: if ('serviceWorker' in navigator) { // Use the window...page load performant window.addEventListener('load', () => { navigator.serviceWorker.register('service-worker.js...'); }); } 然后新建一个文件 service-worker.js , 你们可以写上一个最简单的 registerRoute 方法: importScripts('https://storage.googleapis.com...里面执行 这个是因为 importScripts 只有在 worker 这个 object 的 context 中才能执行....需要将 importScripts 方法放置在 navigator.serviceWorker.register('xxx.js'); 这一行这里注册的 xxx.js 这个 service-worker
使用此插件添加的Service Worker仅在生产环境中启用(例如,仅当您运行“npm run build”或“yarn build”时)。...如果需要在本地测试service worker,请构建应用程序并从构建目录运行一个简单的HTTP服务器。为了避免浏览器缓存的复杂性,推荐新打开一个窗口。...基于workbox-webpack-plugin插件你有两种模式可以选择 ---- 'GenerateSW' (default), will lead to a new service worker...InjectManifest允许您从现有的service worker文件开始, 并创建该文件的副本,并将“预缓存清单”注入其中。...这个选项是用来为icons 和 mainfest 添加版本,用来针对浏览器缓存问题。它将会在icons和mainfest url上追加?
通过WebAssembly + Emscripten、Web Components + Lit、Service Workers + Workbox以及对新的Web API的支持,Chrome和Adobe...这意味着用户在访问时可以更快地加载Photoshop,并且在以后的访问中可以更快速地访问缓存的内容,提升了应用程序的整体性能和响应速度。这是一个重要的优化步骤,有助于改善用户体验。...Adobe使用Workbox库更轻松地将Service Worker缓存集成到他们的构建过程中,这使得整个缓存策略的实施更为便捷,确保了在Web上提供快速和流畅的Photoshop体验。...V8缓存资源的优化V8缓存资源的优化 V8引擎在资源从Service Worker缓存中返回时采取了一些优化措施,以提高性能: 在安装阶段缓存的资源会被急切地编译,以确保代码的一致性和快速性能,这意味着在第一次访问时资源已经准备好...此外,当首次从服务工作者请求WebAssembly模块时,V8引擎会生成并存储一个经过优化的版本到缓存中,这对于Photoshop这样庞大的代码库至关重要。
利用服务工作者(Service Worker) Service Worker 是一种可以在后台运行的脚本,可以拦截和缓存网络请求,提供离线支持,并加速资源加载。我们可以使用它来缓存字体文件。...步骤: 安装 Workbox:Workbox 是 Google 提供的一个工具库,简化了 Service Worker 的创建。...Worker 中。...:结合上文中的浏览器缓存或 Service Worker 缓存策略,确保这些优化后的字体文件同样可以被缓存。...如果你的应用需要支持离线访问或对性能要求较高,推荐使用 Service Worker 或 PWA 进行缓存。
使用 service worker 做缓存和网络降级 在网络上,没有比用户机器上本地存储的缓存更快的了。...如果您的网站运行的是 HTTPS,请使用“实用主义者的 service worker 指南[85]”,将静态资源缓存到 service worker 中,并存储脱机降级资源(甚至脱机页面),然后从用户的机器中检索它们...通常,一种常见的可靠策略是将应用程序 shell 与几个关键页面一起存储在 service worker 的缓存中,比如离线页面、首页和其他重要页面。 不过,有几个问题需要记住。...有了 service worker 之后,我们需要注意 Safari 中的 range 请求[94](如果您为 service worker 使用了 Workbox,它有一个 range 请求模块)。...响应头[96], service worker 不会缓存不透明的响应[97],你可以通过给 设置 crossorigin 属性将图像资源设置为 CORS 模式[98]。”
Chrome 和 Adobe 正在携手打造新的图像编辑体验。...在 Photoshop Web 应用进行初始加载时,会对长任务进行拆分 使用 Service Workers 缓存资产与代码 Service Workers 允许 Web 应用在本地缓存其资产、代码和其他资源...在 Chrome DevTools Application 面板 > 缓存存储处,可查看 Photoshop Web 版已经预缓存的各种资源类型。...在首次访问之后,后续加载往往非常快(以 M1 Macbook 平台为例): Adobe 还使用 Workbox 库,轻松将 Service Worker 缓存集成至整个构建过程当中。...V8 引擎对缓存资源进行优化 当从 Service Worker 缓存处返回资源时,V8 引擎会采取以下优化策略: 在 install 期间缓存的资源,会被立即编译并进行代码缓存,从而实现更快、更一致的性能表现
Web Workers 和 Service Workers 是两种在Web开发中处理后台任务和离线缓存的重要技术。它们在工作原理和用途上有显著区别。...Web Workers:后台处理Web Workers 允许在浏览器后台线程中执行计算密集型任务,避免阻塞主线程(UI线程),从而提高页面的响应性。...网络优先策略在网络可用时,优先使用网络响应,只有在网络失败时才使用缓存。...限制缓存大小:避免无限增长的缓存占用过多存储空间,定期清理无用的缓存条目。优化推送通知:只在必要时发送通知,避免打扰用户,同时确保通知内容有价值。...示例:使用 Service Worker 缓存和 Web Worker 处理Service Worker 缓存资源: 在 service-worker.js 中,缓存所有需要的静态资源和数据。