Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建react应用程序的最佳服务人员策略是什么?_Javascript_Reactjs_Service Worker_Create React App - Fatal编程技术网

Javascript 创建react应用程序的最佳服务人员策略是什么?

Javascript 创建react应用程序的最佳服务人员策略是什么?,javascript,reactjs,service-worker,create-react-app,Javascript,Reactjs,Service Worker,Create React App,生产版本的每次代码更新都会向用户显示一个白色屏幕,直到用户刷新页面为止。将代码更新无缝推送到用户手中的最佳服务人员策略是什么?(无需页面刷新或缓存清除) 默认的服务人员行为并不理想。似乎每次生产代码更新都会导致浏览器显示白色屏幕,直到用户手动刷新页面。我知道这可能需要一些类似于sw precache和实现workbox的定制服务工作者功能的东西——这一切都很好,我已经尝试过了,并且已经让那些库运行和工作到了它仍然模仿完全相同的行为的程度(因此,我认为该项目基本上已经准备好,可以在不弹出的情况下实

生产版本的每次代码更新都会向用户显示一个白色屏幕,直到用户刷新页面为止。将代码更新无缝推送到用户手中的最佳服务人员策略是什么?(无需页面刷新或缓存清除)

默认的服务人员行为并不理想。似乎每次生产代码更新都会导致浏览器显示白色屏幕,直到用户手动刷新页面。我知道这可能需要一些类似于sw precache和实现workbox的定制服务工作者功能的东西——这一切都很好,我已经尝试过了,并且已经让那些库运行和工作到了它仍然模仿完全相同的行为的程度(因此,我认为该项目基本上已经准备好,可以在不弹出的情况下实现正确的服务人员)。但是,我仍然不知道使用什么样的最佳缓存策略/服务人员来实现我想要的结果?

Heyy Timothy

我想你现在已经找到了问题的答案。我希望这个答案能帮助未来的开发者

您所指的策略称为缓存策略。以下是常用策略的列表:

  • 仅网络
    –仅从网络获取
  • cacheOnly
    –仅从缓存中提取
  • 最快的
    –从两者中提取,并以先到者为准进行响应
  • cacheFirst
    –从缓存中提取,但也从网络中提取并更新缓存
默认情况下,CRA的服务人员使用
缓存优先
策略

在您的情况下,您可以选择两种策略:

  • 仅网络
    策略
优点:将始终呈现最新版本的应用程序(无白色屏幕)

缺点:这将导致用户每次都从网络获取应用程序

  • networkFirst
    策略
此策略可用于您的案例。您可以将软件设置为查看版本更新。如果找到新版本,您可以显示一个小烤面包机,上面写着“嘿,有新版本可用,请单击此处刷新”


您还可以查看以下链接以了解更多信息:


如果您已经让它工作了,我不明白您的问题是什么。它只在我已经让sw precache和workbox以相同的默认行为启动并运行的情况下工作。(强制用户刷新页面)。我想了解一个策略建议,该策略不需要无缝应用白屏和生产代码更新,也不需要刷新页面。很抱歉不清楚!