我有一個服務工作者腳本,在多個站點級別重複註冊。如何防止同一服務人員在多個頁面上註冊?
換句話說,相同的服務人員註冊爲www.site.ca/,www.site.ca/text-text,www.site.ca/example-example,等
網站是建立在PHP與不同的網址生成取決於類似API的內容。服務人員註冊在這些頁面上的原因是因爲大多數網站流量都在這些頁面上,而不是在主頁上。結果是相同的服務人員在不同的頁面上使用不同的ID註冊。
有沒有人有辦法阻止多個子級別的同一個腳本的多次註冊?
編輯:
服務工作者的目的是建立通知,即使用戶沒有在網站上。此外,我遇到的問題會對將來更新服務人員的任何嘗試產生負面影響,因爲會有多個副本需要更新。其結果是,當用戶再次登錄特定頁面時,只有一個副本會更新。不能保證該服務工作者文件的所有副本都會被更新。此外,多個副本的結果導致用戶從站點獲取堆棧通知,因此這是一個問題。
編輯:
下面是我到目前爲止和我的理解範圍定義它得到註冊。然而,問題在於它需要能夠註冊到任何人進入站點,因此範圍設置爲「/」。
我想解決的問題是阻止相同服務工作者文件的後續寄存器。
Localhost是實際站點的佔位符。
navigator.serviceWorker.register('localhost/service-worker.js', {scope: './'})
.then(initialiseState);
在Chrome瀏覽器開發調試工具,所產生的服務人員都是這樣的格式:
範圍:本地主機/ URL /材料/
註冊ID:110
活動的工作:
安裝狀態:激活
運行狀態:已停止
腳本:localhost/service-worker.js
...
範圍:本地主機/
註冊ID:111
活動的工作:
安裝狀態:已激活
運行狀態:停機
腳本:本地主機/服務worker.js
...
範圍:本地主機/ URL
註冊ID:112
活動的工作:
安裝狀態:已激活
運行狀態:停機
腳本:本地主機/服務worker.js
...
理想情況下,我想以某種方式只保留一個條目。
我們應該怎麼知道,沒有看到任何代碼? – PHPglue
@PHPglue沒有包含代碼,因爲認爲這不是必要的,因爲它更像是服務人員的行爲問題。 – KROrb
@PHPglue給問題增加了更多上下文 – KROrb