我如何在Azure上获得CRA才能正常运行serviceWorker缓存?

时间:2018-08-29 22:36:35

标签: azure caching service-worker create-react-app

我还没有找到答案,对此我感到有些惊讶,但是我看上去很努力。抱歉,如果我在明显的地方错过了它。


TL; DR

问题:如何配置CRA(使用SW)和将其部署到其中的Azure应用服务,以便它们可以很好地协同工作?


(当前)默认的CreateReactApp配置中存在一个与serviceWorkers相关的讨论相对较深的缓存问题。

在CRA文档中https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#user-content-opting-out-of-caching(特别是“脱机优先考虑因素”中的第5点和第6点)在此处进行了讨论。

有关其最初包含在CRA中的扩展论点可以在这里找到:https://github.com/facebook/create-react-app/issues/2398

我不能百分百确定自己的理解,因此,我将首先总结一下我目前认为正确的内容:


  • CRA在其主文件中设置了标准的缓存清除过程。
  • CRA包含了一种“服务工作者”模式,可以进行重型,超粘性缓存。
  • 服务人员甚至可以在没有Internet连接的情况下加载页面。
  • 原则上,SW将加载页面,然后去向服务器询问最新代码。
    • 如果它检测到较新的版本,它将下载该版本并缓存新版本。
    • 它将立即显示新版本,但是会在页面刚加载时从其新近更新的缓存中使用新版本。

所有这些都是Service Workers的标准,预期的预期行为。 但除此之外:

  • serviceWorker已缓存被清除。
  • 根据您的主机服务器配置,可能会缓存serviceWorker 本身
    • 如果发生这种情况,它将永久显示网站的陈旧版本,直到从缓存中清除 serviceWorker ,然后 >它将开始尝试更新可用内容。
  • 默认的现成的Azure配置不会缓存软件,到目前为止(24小时后)似乎根本没有释放该缓存:(

问题0:我是否已将所有事情都纠正了,还是错过了一些东西?


我总体上喜欢serviceWorker的声音-似乎正在做一项有用的工作,但是CRA提供的东西似乎不太可能在将现成的安装到Azure中时从根本上破坏了-该站点目前已经部署(或给人留下的印象)无法将更新推送到!

我相信我知道如何关闭ServiceWorker,显然包括从已经看过它并因此拥有活动SW的人们的浏览器中清除该ServiceWorker所需的活动步骤。 (尽管我不太清楚该代码将如何工作!?)但是我宁愿不这样做,如果我可以避免的话,我宁愿了解该功能的工作原理,而不是如何禁用此功能。

所以...

问题:如何配置CRA(使用SW)和将其部署到其中的Azure应用服务,以便它们可以很好地协同工作?

0 个答案:

没有答案