我如何在Service Worker中缓存动态URL?它与预缓存有关系吗?我正在使用ReactJS默认serviceWorker

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何在Service Worker中缓存动态URL?它与预缓存有关系吗?我正在使用ReactJS默认serviceWorker相关的知识,希望对你有一定的参考价值。

在我的Main.js文件中,我有以下代码:

import * as serviceWorker from './serviceWorker';
/*
some code
*/
ReactDOM.render(<Main />,document.getElementById('app'));
serviceWorker.register()

此serviceWorker在默认情况下是通过create-react-app操作创建的,但由于没有使用create-react-app创建应用,因此我不得不从源复制它。

serviceWorker在/范围内查找'service-worker.js'文件。在以下行中:

const swUrl = `/service-worker.js`;

使用此配置,我可以缓存service-worker.js文件的PrecacheConfig变量中提到的所有内容,例如/js/app.js

涉及动态网址,例如/myapp/id/test/。我知道肯定不应该对所有这些动态URL进行预缓存,并且应该在用户访问页面时对它们进行缓存,然后在何处以及如何对其进行缓存?

答案

我建议使用Workbox https://developers.google.com/web/tools/workbox管理您的Service Worker功能。使用workbox.routing模块(https://developers.google.com/web/tools/workbox/modules/workbox-routing),可以通过使用特定于应用程序的正则表达式来指定自定义兑现规则。

希望对您有帮助!

以上是关于我如何在Service Worker中缓存动态URL?它与预缓存有关系吗?我正在使用ReactJS默认serviceWorker的主要内容,如果未能解决你的问题,请参考以下文章

React&Service Worker - 缓存内容 - 通知用户

Service Worker 配置 - 网络然后缓存

带有 PWA 和 Service Worker 的 NGRX 离线缓存

Workbox Service Worker 不在缓存中存储图像和 API 响应

使用 create-react-app 添加更多 service-worker 功能

Service Worker 正在缓存文件,但从未触发 fetch 事件