bounty明天到期。回答此问题可获得+500声望奖励。wvdz希望引起更多关注这个问题。
我用create-react-app
创建了我的应用程序,它使用webpack@5.64.4
。
我有一个Web worker,它按照https://webpack.js.org/guides/web-workers/的指导加载如下
export function createWorker() {
return new Worker(new URL('../worker/my-worker.ts', import.meta.url));
}
这一切都很完美,除了一个警告:当没有因特网连接时,它总是失败,即使worker已经在该高速缓存中。这打破了我的应用程序的离线体验。
在网络日志中,我可以看到我们总是发送一个网络请求来检查更新的worker chunk。服务器将回复304 NOT MODIFIED,之后它将正常工作。但是,如果无法访问服务器,则不会加载脚本,我们将失败。其他块从内存缓存中正确地提供,而无需调用服务器。
1条答案
按热度按时间ulydmbyx1#
下面是sw的javascript代码。js,serviceworker文件将拦截网络请求并从缓存中提供服务:
要注册它,请在您的页面上调用以下命令:
请注意,serviceworker将在您的域根目录下的任何页面中处于活动状态,而不仅仅是在调用此注册的页面中。
您可以在devtools中查看网络请求是否从网络、浏览器缓存或serviceworker提供服务,以确认它正在工作。