Service worker æ¬è´¨ä¸å å½ Web åºç¨ç¨åºãæµè§å¨ä¸ç½ç»ï¼å¯ç¨æ¶ï¼ä¹é´ç代çæå¡å¨ãè¿ä¸ª API æ¨å¨å建ææç离线ä½éªï¼å®ä¼æ¦æªç½ç»è¯·æ±å¹¶æ ¹æ®ç½ç»æ¯å¦å¯ç¨æ¥éåéå½çå¨ä½ãæ´æ°æ¥èªæå¡å¨çèµæºãå®è¿æä¾å ¥å£ä»¥æ¨ééç¥å访é®åå°åæ¥ APIã
Service worker çæ¦å¿µåç¨æ³Service worker æ¯ä¸ä¸ªæ³¨å卿宿ºåè·¯å¾ä¸çäºä»¶é©±å¨ workerãå®éç¨ JavaScript æä»¶çå½¢å¼ï¼æ§å¶å ³èç页颿è ç½ç«ï¼æ¦æªå¹¶ä¿®æ¹è®¿é®åèµæºè¯·æ±ï¼ç»ç²åº¦å°ç¼åèµæºãä½ å¯ä»¥å®å ¨æ§å¶åºç¨å¨ç¹å®æ å½¢ï¼æå¸¸è§çæ å½¢æ¯ç½ç»ä¸å¯ç¨ï¼ä¸ç表ç°ã
Service worker è¿è¡å¨ worker ä¸ä¸æï¼å æ¤å®æ æ³è®¿é® DOMï¼ç¸å¯¹äºé©±å¨åºç¨ç主 JavaScript 线ç¨ï¼å®è¿è¡å¨å ¶ä»çº¿ç¨ä¸ï¼æä»¥ä¸ä¼é æé»å¡ãå®è¢«è®¾è®¡ä¸ºå®å ¨å¼æ¥ï¼å æ¤ï¼åæ¥ XHR å Web Storage ä¸è½å¨ service worker ä¸ä½¿ç¨ã
åºäºå®å ¨èéï¼Service worker åªè½ç± HTTPS æ¿è½½ï¼æ¯ç«ä¿®æ¹ç½ç»è¯·æ±çè½åæ´é²ç»ä¸é´äººæ»å»ä¼é常å±é©ï¼å¦æå 许访é®è¿äºå¼ºå¤§ç APIï¼æ¤ç±»æ»å»å°ä¼åå¾å¾ä¸¥éãå¨ Firefox æµè§å¨çç¨æ·éç§æ¨¡å¼ï¼Service Worker ä¸å¯ç¨ã
夿³¨ï¼ å¨ Firefoxï¼ä¸ºäºè¿è¡æµè¯ï¼ä½ å¯ä»¥éè¿ HTTP è¿è¡ service workerï¼ä¸å®å ¨ï¼ï¼åªééä¸ Firefox å¼åè é项/齿轮èåä¸ç Enable Service Workers over HTTP (when toolbox is open) é项ã
夿³¨ï¼ ä¸ä¹åå¨è¯¥é¢åçå°è¯ä¸åï¼å¦ AppCacheï¼ï¼service worker å¹¶ä¸ç¡®å®ä½ è¯å¾å»åä»ä¹ï¼ä½æ¯å½è¿äºå设ä¸å®å ¨æ£ç¡®æ¶ï¼å®ä»¬ä¼è¢«ä¸æãç¸å¯¹å°ï¼service worker å¯ä»¥æ´ç»è´å°æ§å¶æ¯ä¸ä»¶äºæ ã
夿³¨ï¼ Service worker 大éä½¿ç¨ Promiseï¼å 为é常å®ä»¬ä¼çå¾ ååºåç»§ç»ï¼å¹¶æ ¹æ®ååºè¿åä¸ä¸ªæåæè 失败çæä½ãPromise é常éåè¿ç§åºæ¯ã
注åä½¿ç¨ ServiceWorkerContainer.register()
æ¹æ³é¦æ¬¡æ³¨å service workerãå¦ææ³¨åæåï¼service worker å°±ä¼è¢«ä¸è½½å°å®¢æ·ç«¯å¹¶å°è¯å®è£
ææ¿æ´»ï¼è§ä¸æï¼ï¼è¿å°ä½ç¨äºæ´ä¸ªåå
ç¨æ·å¯è®¿é®ç URLï¼æè
å
¶ç¹å®åéã
æ¤æ¶ï¼ä½ ç service worker å°éµå®ä»¥ä¸çå½å¨æï¼
ç¨æ·é¦æ¬¡è®¿é® service worker æ§å¶çç½ç«æé¡µé¢æ¶ï¼service worker ä¼ç«å»è¢«ä¸è½½ã
ä¹åï¼å¨ä»¥ä¸æ åµå°ä¼è§¦åæ´æ°ï¼
å½ä¸è½½çæä»¶åç°æ¯ææ°çæ¶ï¼å°±ä¼è¯å¾å®è£ ââè¦ä¹ä¸ç°æç service worker ä¸åï¼åè对æ¯ï¼ï¼è¦ä¹æ¯å¨é¡µé¢æç½ç«éå°ç第ä¸ä¸ª service workerã
å¦æè¿æ¯é¦æ¬¡å¯ç¨ service workerï¼é¡µé¢ä¼é¦å å°è¯å®è£ ï¼å®è£ æååå®ä¼è¢«æ¿æ´»ã
å¦æç°æ service worker å·²å¯ç¨ï¼æ°çæ¬ä¼å¨åå°å®è£
ï¼ä½ä»ä¸ä¼è¢«æ¿æ´»ââè¿ä¸ªæ¶åºç§°ä¸º worker in waitingãç´å°ææå·²å è½½ç页é¢ä¸åä½¿ç¨æ§ç service worker æä¼æ¿æ´»æ°ç service workerãåªè¦é¡µé¢ä¸åä¾èµæ§ç service workerï¼æ°ç service worker ä¼è¢«æ¿æ´»ï¼æä¸º active workerï¼ãä½¿ç¨ ServiceWorkerGlobalScope.skipWaiting()
å¯ä»¥æ´å¿«å°è¿è¡æ¿æ´»ï¼active worker å¯ä»¥ä½¿ç¨ Clients.claim()
声æç°æç页é¢
ä½ å¯ä»¥çå¬ install
äºä»¶ï¼è¯¥äºä»¶è§¦åæ¶çæ åè¡ä¸ºæ¯åå¤ service worker ç¨äºä½¿ç¨ï¼ä¾å¦ä½¿ç¨å
建ç storage API æ¥å建ç¼åï¼å¹¶ä¸æ¾ç½®åºç¨ç¦»çº¿æ¶æéèµæºã
è¿æä¸ä¸ª activate
äºä»¶ãæ¤äºä»¶è§¦åçæ¶é´ç¹éå¸¸æ¯æ¸
çæ§ç¼å以åå
¶ä»ä¸ä½ ç service worker çå
åçæ¬ç¸å
³çä¸è¥¿çå¥½æ¶æºã
Servcie worker å¯ä»¥éè¿ FetchEvent
äºä»¶å»ååºè¯·æ±ãéè¿ä½¿ç¨ FetchEvent.respondWith
æ¹æ³ï¼ä½ å¯ä»¥ä»»æä¿®æ¹å¯¹äºè¿äºè¯·æ±çååºã
夿³¨ï¼ å 为 oninstall
å onactivate
宿åéè¦ä¸äºæ¶é´ï¼service worker æ åæä¾ä¸ä¸ª waitUntil()
æ¹æ³ã䏿¦å¨å¸¦æ promise ç install
æ activate
äºä»¶ä¸è°ç¨å®ï¼é£ä¹ fetch
å push
çåè½äºä»¶å°çå¾
ï¼ç´å° promise æåå
ç°ã
æå»ºä¸ä¸ªåºæ¬ç¨ä¾ç宿´æç¨ï¼è¯·é è¯»ä½¿ç¨ Service Workerã
å ¶ä»ä½¿ç¨åºæ¯Service workers ä¹å¯ä»¥ç¨æ¥åè¿äºäºæ ï¼
æªæ¥ service worker è½å¤ç¨æ¥åæ´å¤ä½¿ web 平尿¥è¿åçåºç¨çäºãå¼å¾å ³æ³¨çæ¯ï¼å ¶ä»æ åä¹è½å¹¶ä¸å°ä¼ä½¿ç¨ service workerï¼ä¾å¦ï¼
Cache
表示ç¨äº Request
/ Response
对象对çåå¨ï¼ä½ä¸º ServiceWorker
çå½å¨æçä¸é¨å被ç¼åã
CacheStorage
表示 Cache
对象çåå¨ãæä¾ä¸ä¸ªææå½åç¼åç主ç®å½ï¼ServiceWorker
å¯ä»¥è®¿é®å¹¶ç»´æ¤åååç¬¦ä¸²å° Cache
å¯¹è±¡çæ å°ã
Client
表示 service worker client çä½ç¨åãä¸ä¸ª service worker client å¯ä»¥æ¯æµè§å¨ä¸ä¸æçä¸ä¸ªææ¡£ï¼ä¹å¯ä»¥æ¯ä¸ä¸ªç± active worker æ§å¶ç SharedWorker
ã
Clients
表示ä¸ä¸ª Client
对象容å¨ï¼æ¯è®¿é®å½åæºçæ´»å¨ç service worker client ç主è¦éå¾ã
ExtendableEvent
æ©å±è¢«ååå° ServiceWorkerGlobalScope
ç install
å activate
äºä»¶æ¶åºï¼ä½ä¸º service worker çå½å¨æçä¸é¨åãè¿ä¼ç¡®ä¿ä»»ä½åè½åäºä»¶ï¼å¦ FetchEvent
ï¼ä¸è¢«ååå° ServiceWorker
ï¼ç´å°å®æ´æ°äºæ°æ®åºæ¶æãå é¤è¿æç¼å项çç以åã
ExtendableMessageEvent
å service worker 触åç message
äºä»¶çæ¶é´å¯¹è±¡ï¼å½ ServiceWorkerGlobalScope
ä»å¦ä¸ä¸ªä¸ä¸ææ¶å°ééæ¶æ¯ï¼ï¼å»¶é¿äºæ¤ç±»äºä»¶ççå½å¨æã
FetchEvent
ä¼ éç» ServiceWorkerGlobalScope.onfetch
å¤ç彿°çåæ°ï¼FetchEvent
代表ä¸ä¸ªå¨ ServiceWorker
ç ServiceWorkerGlobalScope
ä¸ååç请æ±å¨ä½ãå®å
å«å
³äºè¯·æ±åååºçç»æä¿¡æ¯ï¼å¹¶ä¸æä¾ FetchEvent.respondWith()
æ¹æ³ï¼è¿ä¸ªæ¹æ³å
许æä»¬æä¾ä»»æçååºè¿åå°æ§å¶é¡µé¢ã
InstallEvent
å·²å¼ç¨ éæ å
ä¼ éç» oninstall
å¤ç彿°çåæ°ï¼InstallEvent
æ¥å£ä»£è¡¨ä¸ä¸ªå¨ ServiceWorker
ç ServiceWorkerGlobalScope
ä¸ååçå®è£
å¨ä½ï¼ä½ä¸º ExtendableEvent
çåäºä»¶ï¼å®ä¿è¯è¯¸å¦ FetchEvent
çåè½æ§äºä»¶å¨å®è£
è¿ç¨ä¸ä¸ä¼è¢«ååã
NavigationPreloadManager
æä¾ä¸ service worker ä¸èµ·ç®¡çèµæºé¢å è½½çæ¹æ³ã
Navigator.serviceWorker
å WorkerNavigator.serviceWorker
è¿åä¸ä¸ª ServiceWorkerContainer
对象ï¼è¯¥å¯¹è±¡æä¾å¯¹ç¸å
³ document çæ³¨åãå é¤ãæ´æ°ä»¥åä¸ ServiceWorker
对象éä¿¡ç访é®ã
NotificationEvent
ä¼ éç» onnotificationclick
å¤ç彿°çåæ°ï¼NotificationEvent
æ¥å£ä»£è¡¨å¨ ServiceWorker
ç ServiceWorkerGlobalScope
ä¸ååçåå»äºä»¶éç¥ã
ServiceWorker
表示ä¸ä¸ª service workerãå¤ä¸ªæµè§çä¸ä¸æ (ä¾å¦ pageãworker çç) é½è½éè¿ç¸åç ServiceWorker
对象ç¸å
³èã
ServiceWorkerContainer
æä¾ä¸ä¸ªå¨ç½ç»çæä¸æ service worker ä½ä¸ºä¸ä¸ªæ´ä½ç对象ï¼å æ¬è¾ 婿³¨åï¼å注åä»¥åæ´æ° service workerï¼å¹¶ä¸è®¿é® service worker çç¶æä»¥åä»ä»¬ç注åä¿¡æ¯ã
ServiceWorkerGlobalScope
表示 service worker çå ¨å±æ§è¡ä¸ä¸æã
MessageEvent
表示åéå° ServiceWorkerGlobalScope
çä¿¡æ¯ã
ServiceWorkerRegistration
表示 service worker çæ³¨åã
SyncEvent
éæ å
SyncEvent æ¥å£ä»£è¡¨å¨ ServiceWorker ç ServiceWorkerGlobalScope
ä¸ååç忥å¨ä½ã
SyncManager
éæ å
æä¾ç¨äºæ³¨ååååºåæ¥æ³¨åçæ¥å£ã
WindowClient
è¡¨ç¤ºå¨æµè§å¨ä¸ä¸æä¸è®°å½ç service worker 客æ·ç«¯çä½ç¨åï¼è¢«æ´»å¨çå·¥ä½è
æ§å¶ãæ¯ Client
对象çç¹æ®ç±»åï¼å
å«ä¸äºéå çæ¹æ³åå¯ç¨ç屿§ã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4