Cloudfront發行版與react應用程式和wordpress應用程式託管在同一網域上 - 如何讓瀏覽器快取react應用程式以呈現wordpress應用程式?

Cloudfront發行版與react應用程式和wordpress應用程式託管在同一網域上 - 如何讓瀏覽器快取react應用程式以呈現wordpress應用程式?

我有一個網域,透過 cloudfront 在 s3 儲存桶中託管一個 React 網站。還有一個託管在該網域的子網域上的 WordPress 網站,在 Web 應用程式的 Cloudfront 發行版中,我有兩種使用路徑模式設定的行為,en並且en/*以 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 在啟動後攔截了對網域的所有請求。刪除服務人員(我能夠這樣做,因為不再需要它)解決了這個問題。

相關內容