首先,我们需要在项目的根目录下新增一个 package.json 文件: npm init -y 安装 sw-precache: npm install --save-dev sw-precache 创建一个配置文件 在 package.json 中新增一个 script 用来生成 service worker 文件: "scripts": { "sw": "sw-precache --config=tools/precache.js
你可以使用 Workbox、Sw-precache 等工具来帮助实现 PWA。7. 移动端调试和优化使用 Chrome DevTools 或 Safari 的开发者工具在移动设备上调试你的网站。
) { var url = new URL(originalUrl); // Remove the hash; see https://github.com/GoogleChrome/sw-precache strings into a string with '&' in between each return url.toString(); }; var hashParamName = '_sw-precache 简介 在 Workbox 之前,GoogleChrome 团队较早时间推出过 sw-precache 和 sw-toolbox 库,但是在 GoogleChrome 工程师们看来,workbox 才是真正能方便统一的处理离线能力的更完美的方案 ,所以停止了对 sw-precache 和 sw-toolbox 的维护。
_sw-precache=fff6559539ab8f2d6043bcfa832ce38f。
在 Workbox 之前,GoogleChrome 团队较早时间推出过 sw-precache 和 sw-toolbox 库,但是在 GoogleChrome 工程师们看来,workbox 才是真正能方便统一的处理离线能力的更完美的方案 ,所以停止了对 sw-precache 和 sw-toolbox 的维护。
Strategies4.Request routing5.Background sync6.Helpful debuggin7.Greater flexibility and feature set than sw-precache
response); }) }) ) }) ) }) 在上文中,我使用随机数来破坏缓存,但您可以更进一步,使用构建步骤来添加内容的哈希值(类似于 sw-precache
_sw-precache=a7a4d39c5138496b644f27256d087649#ref
为了屏蔽这些边界case,推荐使用GoogleChromeLabs/sw-precache帮助处理缓存控制问题(包括过期,更新策略等等) 缓存有了,接下来实现代理部分,拦截请求,并把缓存内容作为响应:
在 Workbox 之前,Google Chrome 团队较早时间推出过 sw-precache 和 sw-toolbox 库,但骂声很多,直到 Workbox 才真正诞生了能方便统一的处理离线能力的更完美的方案
在新的 Service Worker 被激活时,清单里的资源就会被请求与缓存,这其实与 SW-Precache 这个库的运行机制非常接近。 实际上,我们只对我们标记为“关键路由”的路由进行依赖收集。