React app:旧版本保存在缓存中,直到我检查它

Gab*_*ron 9 reactjs service-worker create-react-app

我曾经create-react-app开始研究React应用程序.默认情况下,它使用服务工作者.我也碰巧用https为我的生产应用程序服务.

事实证明,使用此配置,我的浏览器只是没有获得我部署的新版本.它继续重新加载旧版本,即使我强制刷新.我可以通过检查页面(使用Chrome)来获取加载最新版本的唯一方法.然后,当我强制刷新时,加载最新的构建.

我已经禁用了服务工作者,因为它似乎是罪魁祸首,但我继续遇到这个问题.我不能要求我的用户在浏览器中打开检查器以获得最新版本.

我怎样才能找到解决这个问题的方法?有没有create-react-app配置我可以改变,以确保不再发生这种情况?

Gab*_*ron 5

我实际上发现了问题所在:被index.html缓存了,所以它指向也被缓存的旧js文件。

我解决这个问题的方法是将此配置添加到.htaccess应用程序根目录的文件中(尽管通过其他方式配置 apache 也可能有效):

<FilesMatch "\.(html)$">
  FileETag None
  <IfModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  </IfModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

最终还是和服务人员无关。index.html它只与缓存的方式有关。