2017-08-13 41 views
0

我使用create react創建了一個應用程序,默認情況下包含服務人員。我希望在任何時候有人輸入給定的url時運行該應用程序,除非他們轉到/ blog /,該服務正在提供一組靜態內容。我在應用中使用反應路由器來捕捉不同的網址。設置服務人員只排除某些URL

我有nginx設置服務/博客/和它工作正常,如果有人訪問/博客/沒有訪問反應的應用程序。然而,因爲服務工作者的範圍是./,所以當有人訪問除/ blog /之外的任何URL時,應用程序將加載服務工作者。從那時起,服務工作者繞過到服務器的連接,並且/ blog /加載反應應用程序而不是靜態內容。

有沒有辦法讓服務人員加載除/ blog /之外的所有網址?

+1

你可以張貼了'fetch'事件偵聽器內的相關代碼在你的服務人員? –

回答

1

因此,綜合考慮,你還沒有發佈相關的服務人員的任何代碼,你可以考慮加入一個簡單的if條件內爲fetch

代碼塊這種代碼塊應該已經在那裏爲您服務工作者內。只需添加條件語句

self.addEventListener('fetch', function (event) { 

    if (event.request.url.match('^.*(\/blog\/).*$')) { 
     return false; 
    } 
    // OR 

    if (event.request.url.indexOf('/blog/') !== -1) { 
     return false; 
    } 
    // **** rest of your service worker code **** 

您可以使用正則表達式或原型方法indexOf。 你的奇想。

上面會引導你們的服務人員,只是做什麼時,URL匹配/blog/

+0

嘿,對不起,延遲的回覆,但是,這很好。謝謝你的幫助。 – user3577166

+0

你好,我在哪裏實際上把這個代碼塊放在我的create-react-app中?我必須彈出嗎? – Woppi