2017-10-20 66 views
0

我有一個服務器託管在根目錄'/'上,它服務於一個Web應用程序。 '/ otherapp'還有另一個應用程序正在服務。我遇到的問題是serviceWorker正在攔截將要「/ otherap」的流量。我知道serviceWorker.register中的'scope'參數默認爲'./',但我正在尋找一種方法告訴serviceWorker允許任何'/ otherapp'請求被忽略,並且抓住其他所有東西。我能想到的唯一的事情就是使用某種類型的正則表達式,但是我沒有看到有關這樣的人的任何文檔或主題。有任何想法嗎?對於服務人員,是否可以在serviceWorker.register'範圍'字段中使用正則表達式?

+1

我不確定正則表達式在這裏會有幫助。這似乎更多的是一個子範圍是否可以被忽略的問題,並且據我所知,答案是否定的。你可以忽略來自'/ otherapp'的FetchEvent,但你必須手動完成。您可以使用請求的引用鏈接,或者更可靠地使用事件對象上的'clientId'和['clients.get'](https://developer.mozilla.org/en-US/docs/Web/API/Clients /得到)。 –

回答

0

您不能在服務工作者範圍中指定正則表達式。

你可以做的是在提取事件處理程序中應用你的正則表達式來控制獲取緩存的內容,獲取緩存的時間等等。這是你獲得各種控制權的地方。

我的建議是將事件處理程序的邏輯重構爲可能的類,以幫助您更輕鬆地管理代碼和邏輯。

您可以根據基於一個或多個正則表達式的不同路由創建不同的緩存策略。

想想這樣,服務人員就像瀏覽器中的迷你Web服務器。就像您在設計節點快車,ASP.NET MVC或Ruby on Rails之類的東西時一樣,您需要使用路由處理程序來檢索正確的響應。你需要在你的服務人員中做同樣的事情。

相關問題