å®å ¨ä¸ä¸æ: æ¤é¡¹åè½ä» å¨ä¸äºæ¯æçæµè§å¨çå®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
夿³¨ï¼ æ¤ç¹æ§å¨ Web Worker ä¸å¯ç¨ã
Background Synchronization API 使 Web åºç¨ç¨åºè½å¤æ¨è¿ä»»å¡ï¼ä»¥ä¾¿ä¸æ¦ç¨æ·æ¥æç¨³å®çç½ç»è¿æ¥ï¼å®ä»¬å°±å¯ä»¥å¨ Service Worker ä¸è¿è¡ã
æ¦å¿µåç¨æ³å¦æè®¾å¤ç¦»çº¿ï¼Background Synchronization API å 许 Web åºç¨ç¨åºå°æå¡å¨åæ¥å·¥ä½äº¤ç» Service Worker å»¶è¿å¤çãå ¶ç¨éå¯è½å æ¬å¨åºç¨ç¨åºä½¿ç¨æé´æ æ³åé请æ±çæ åµä¸å¨åå°åé请æ±ã
ä¾å¦ï¼çµåé®ä»¶å®¢æ·ç«¯åºç¨ç¨åºå¯ä»¥å è®¸å ¶ç¨æ·å¨ä»»ææ¶é´æ°åååéæ¶æ¯ï¼å³ä½¿è®¾å¤æ²¡æç½ç»è¿æ¥ä¹æ¯å¦æ¤ãåºç¨ç¨åºåç«¯ä» éæ³¨åä¸ä¸ªåæ¥è¯·æ±ï¼å¹¶ä¸å½ç½ç»æ¡ä»¶å次å 许æ¶ï¼Service Worker 伿¶å°è¦æ¥å¹¶å¤ç忥ã
SyncManager
æ¥å£å
许éè¿ ServiceWorkerRegistration.sync
使ç¨ã使ç¨å¯ä¸çæ è¯ç¬¦æ¥è®¾ç½®åæ¥äºä»¶çâåç§°â, ç¶åå¯ä»¥å¨ ServiceWorker
èæ¬ä¸çå¬ã䏿¦æ¶å°äºä»¶ï¼ä½ å¯ä»¥è¿è¡ä»»ä½å¯ç¨çåè½ï¼æ¯å¦åæå¡å¨åé请æ±ã
ç±äºæ¤ API ä¾èµäº Service Workerï¼å æ¤æ¤ API æä¾çåè½ä» å¨å®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
æ¥å£SyncManager
å®éªæ§
注åç½ç»æ¢å¤åéè¦å¨ Service Worker ä¸è¿è¡çä»»å¡ãè¿äºä»»å¡ç§°ä¸ºåå°åæ¥è¯·æ±ï¼background sync requestsï¼ã
SyncEvent
å®éªæ§
ä»£è¡¨åæ¥äºä»¶ï¼åéå° ServiceWorker
çå
¨å±ä½ç¨åãæä¾äºä¸ç§å¨è®¾å¤å
·æç½ç»è¿æ¥åå¨ Service Worker ä¸è¿è¡ä»»å¡çæ¹å¼ã
Service Worker API ç以䏿°å¢å 容æä¾äºç¨äºè®¾ç½®åå°åæ¥çå ¥å£ç¹ã
ServiceWorkerRegistration.sync
åªè¯»
è¿å SyncManager
çå¼ç¨ï¼ç¨äºæ³¨åå¨è®¾å¤å
·æç½ç»è¿æ¥åè¿è¡çä»»å¡ã
sync
äºä»¶
䏿¦ç½ç»å¯ç¨ï¼ä¼ç«å»è§¦å sync
çå¤ç卿§è¡å·¥ä½ã
以ä¸ç¤ºä¾å±ç¤ºäºå¦ä½ä½¿ç¨è¯¥æ¥å£ã
请æ±åå°åæ¥ä»¥ä¸å¼æ¥å½æ°å¨æµè§å¨çä¸ä¸ææ³¨ååå°åæ¥ä»»å¡ï¼
async function syncMessagesLater() {
const registration = await navigator.serviceWorker.ready;
try {
await registration.sync.register("sync-messages");
} catch {
console.log("Background Sync æ æ³è¢«æ³¨åï¼");
}
}
éè¿æ ç¾æ ¡éªåå°åæ¥æ¯å¦å·²è¯·æ±
æ¤ä»£ç æ£æ¥æ¯å¦æ³¨åäºç»å®æ ç¾çåå°åæ¥ä»»å¡ã
navigator.serviceWorker.ready.then((registration) => {
registration.sync.getTags().then((tags) => {
if (tags.includes("sync-messages")) {
console.log("已请æ±åæ¥æ¶æ¯");
}
});
});
å¨ Service Worker ä¸çå¬åå°åæ¥
以ä¸ç¤ºä¾æ¾ç¤ºäºå¦ä½å¨ Service Worker ä¸ååºåå°åæ¥äºä»¶ã
self.addEventListener("sync", (event) => {
if (event.tag === "sync-messages") {
event.waitUntil(sendOutboxMessages());
}
});
è§è æµè§å¨å
¼å®¹æ§ api.SyncManager api.ServiceWorkerGlobalScope.sync_event åè§
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