
我有一個網域,透過 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 在啟動後攔截了對網域的所有請求。刪除服務人員(我能夠這樣做,因為不再需要它)解決了這個問題。