用于離線緩存
可以用來實(shí)現(xiàn)離線應(yīng)用,本質(zhì)上充當(dāng)應(yīng)用程序、瀏覽器和網(wǎng)絡(luò)之間的代理服務(wù)器。
用于實(shí)現(xiàn)離線緩存時(shí),它攔截 web 應(yīng)用的一切請(qǐng)求,然后判斷哪些可以直接返回緩存中的內(nèi)容,哪些請(qǐng)求要發(fā)送到服務(wù)器。
取代 AppCache,能更精細(xì)控制。
其它使用場(chǎng)景
service worker 是注冊(cè)在指定源和路徑下的事件驅(qū)動(dòng)的worker。
它工作在 worker 上下文。相對(duì)于驅(qū)動(dòng)應(yīng)用的主 JavaScript 線程,它工作在其它線程中,因此不會(huì)造成阻塞。
所以它還有很多其他的應(yīng)用場(chǎng)景,例如:
- 后臺(tái)數(shù)據(jù)同步,即使沒有用戶訪問,也能更新緩存
- 集中更新計(jì)算成本高的數(shù)據(jù),這樣多個(gè)頁面就可以利用同一種數(shù)據(jù)
- 自定義模板用于特定url模式
- 性能增強(qiáng),比如預(yù)取用戶可能需要的資源,比如相冊(cè)中的后面數(shù)張圖片
- 響應(yīng)推送,向用戶發(fā)送內(nèi)容更新的推送消息
注意
- 出于安全考量,Service workers只能由HTTPS承載。為了便于開發(fā),localhost 也被認(rèn)為是安全源
- 兼容性