Cloudfront 分发版中的 React 应用程序和 wordpress 应用程序托管在同一个域中 - 如何让缓存了 React 应用程序的浏览器呈现 wordpress 应用程序?

Cloudfront 分发版中的 React 应用程序和 wordpress 应用程序托管在同一个域中 - 如何让缓存了 React 应用程序的浏览器呈现 wordpress 应用程序?

我有一个域,它通过 cloudfront 在 s3 存储桶中托管一个 React 网站。该域的子域上还托管了一个 wordpress 网站,在 web 应用程序的 cloudfront 发行版中,我使用路径模式设置了两个行为,enen/*以 wordpress 子域作为其来源。

此设置似乎在en/*以隐身模式访问路径时以及在从未访问过主域的浏览器中有效。但是,在之前访问过该域的浏览器中,浏览器会呈现 React 应用程序而不是 Wordpress 页面。执行清空缓存和硬重新加载会导致它显示 Wordpress 页面,但之后再次刷新并返回呈现 Web 应用程序。这种情况非常常见。

当 React 应用程序在应该呈现 WordPress 应用程序的 URL 上呈现时,我收到以下响应标头: x-cache: RefreshHit from cloudfront

此外,虽然从未访问过 React 应用程序的浏览器在访问以 开头的路径时会正确加载 WordPress 应用程序/en,但是一旦该浏览器访问了 React 应用程序,以 开头的路径将/en不再呈现 WordPress 应用程序

这里到底发生了什么?有没有办法让它一致地呈现 wordpress 应用程序,而无需用户完全清除浏览器的缓存?有没有办法使用 javascript 清除相关的缓存项,以便当它检测到它位于其中一条路径上时,我可以在 react 应用程序内部执行此操作?

答案1

问题原来与我的 cloudfront 或 s3 配置无关,而是由于 React 应用启动的 Service Worker 在启动后拦截了对域的所有请求。删除 Service Worker(我可以这样做,因为它不再需要)解决了这个问题。

相关内容