晋江外贸网站开发淘宝客cms网站模板下载

张小明 2026/1/2 15:50:45
晋江外贸网站开发,淘宝客cms网站模板下载,前端登陆页面设计模板,现在网站优化怎么做Service Worker 规范中明确定义的 6 种内部状态#xff08;internal states#xff09;这些状态描述了 Service Worker 线程在其生命周期中的不同阶段。以下是基于规范#xff08;如 W3C 和 WHATWG 标准#xff09;整理的表格#xff0c;准确对应这六种状态#xff1a;序…Service Worker 规范中明确定义的 6 种内部状态internal states这些状态描述了 Service Worker 线程在其生命周期中的不同阶段。以下是基于规范如 W3C 和 WHATWG 标准整理的表格准确对应这六种状态序号状态英文状态中文说明1parsed已解析浏览器成功解析注册的 Service Worker 脚本但尚未开始安装。这是注册后的初始状态。2installing安装中正在执行install事件。开发者通常在此阶段缓存静态资源。若脚本未改变此状态可能跳过。3installed已安装安装成功完成但尚未激活。此时 Service Worker 处于“等待”状态waiting尤其当已有旧版正在控制页面时。4activating激活中正在执行activate事件。通常用于清理旧缓存或迁移数据。5activated已激活Service Worker 已激活并开始控制其作用域内的页面仅对新导航或刷新后的页面生效可拦截fetch、处理推送等事件。6redundant已失效冗余Service Worker 被废弃。可能原因包括安装失败、被新版本取代、注册被注销unregister或脚本内容与已安装版本不一致导致回退。补充说明这些状态是Service Worker 内部状态internal state可通过ServiceWorker.state属性读取例如navigator.serviceWorker.controller?.state。状态转换是单向的除异常情况外parsed→installing→installed→activating→activated或在任一阶段失败/被取代 →redundant开发者可通过监听statechange事件跟踪状态变化此六状态模型是理解 Service Worker 生命周期和调试更新行为的核心依据。Service Worker 生命周期阶段状态说明1. 注册Registrationinstalling若首次注册通过navigator.serviceWorker.register()注册 Service Worker 脚本。浏览器下载脚本并准备安装。2. 安装Installinginstalling触发install事件。在此阶段可缓存静态资源如通过 Cache API。若安装成功进入“已安装”状态若失败如缓存失败则进入“冗余redundant”状态。3. 已安装 / 等待激活Installed / Waitingwaiting安装成功但尚未激活。如果已有旧版 Service Worker 正在控制客户端则新版本会等待除非调用skipWaiting()。4. 激活Activatingactivating触发activate事件。通常用于清理旧缓存或执行迁移逻辑。激活后Service Worker 开始控制页面仅对新打开/刷新的页面生效。5. 已激活ActivatedactiveService Worker 处于活跃状态可拦截fetch、push、sync等事件处理网络请求和后台任务。6. 冗余RedundantredundantService Worker 被废弃原因可能包括安装失败、被新版本取代、或注册被注销。此时不再接收事件。补充说明页面必须通过 HTTPS或 localhost才能使用 Service Worker。Service Worker 的作用域scope由注册时的路径决定。只有当所有受控页面关闭或新版本接管后旧 Service Worker 才会被替换。该生命周期确保了 Web 应用更新的平滑过渡与离线能力的可靠实现。完整的注册函数async function registerServiceWorker() { if (!(serviceWorker in navigator)) { console.warn(当前浏览器不支持 Service Worker); return; } try { const registration await navigator.serviceWorker.register(./js/serviceWorker.js, { //scope: /, // 控制范围 updateViaCache: none // 控制更新行为 }); console.log(Service Worker 注册成功作用域:, registration.scope); // 监听生命周期 trackServiceWorkerLifecycle(registration); // 监听控制器变化 navigator.serviceWorker.addEventListener(controllerchange, () { console.log(页面控制器已变更可能需要刷新页面); }); return registration; } catch (error) { console.error(Service Worker 注册失败:, error); throw error; } } function trackServiceWorkerLifecycle(registration) { const logState (worker, label Worker) { if (!worker) return; const log (message) console.log(${label}: ${message}); log(初始状态: ${worker.state}); worker.addEventListener(statechange, () { log(状态变为: ${worker.state}); switch (worker.state) { case installed: if (registration.waiting) { log(已安装等待激活); // 可以在这里提示用户刷新页面 } break; case activated: log(已激活可以控制页面); break; case redundant: log(已废弃被新版本替换); break; } }); }; // 监听现有 worker if (registration.installing) logState(registration.installing, Installing); if (registration.waiting) logState(registration.waiting, Waiting); if (registration.active) logState(registration.active, Active); // 监听新 worker 安装 registration.addEventListener(updatefound, () { console.log(开始安装新版本的 Service Worker); logState(registration.installing, New Installing); }); } // 使用示例 window.addEventListener(load, () { registerServiceWorker().then(registration { // 可以在这里添加更多逻辑 }); });更新检查// 检查 Service Worker 更新 function checkForUpdates() { if (!navigator.serviceWorker || !navigator.serviceWorker.controller) { return; } navigator.serviceWorker.ready.then((registration) { registration.update().then(() { if (registration.waiting) { console.log(有新的 Service Worker 等待激活); // 可以提示用户刷新页面 showUpdateNotification(); } }); }); } // 提示用户刷新 function showUpdateNotification() { if (confirm(有新的版本可用是否立即刷新)) { navigator.serviceWorker.controller.postMessage({ type: SKIP_WAITING }); window.location.reload(); } }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

河南微网站建设余姚市建设协会网站

5个理由告诉你为什么Moode Player是音乐发烧友的终极选择 【免费下载链接】moode moOde sources and configs 项目地址: https://gitcode.com/gh_mirrors/mo/moode 您是否曾经为了追求完美音质而苦恼?Moode Player作为一款专为音乐爱好者打造的高级音频播放系…

张小明 2025/12/27 0:46:32 网站建设

做网站需要租服务器吗wordpress网页的源代码在哪里

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 本站教程、资源皆在单机环境进行,仅供单机研究学习使用。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 一、获取材料和结果演示 百度网盘链接: https://…

张小明 2025/12/27 6:42:20 网站建设

大悟网站制作wordpress cdn 部署

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

张小明 2025/12/27 12:13:56 网站建设

网站定制开发什么意思免费行情100个软件

Wan2.2-T2V-A14B与YOLOv8结合?探索多模态AI在视频生成中的新边界 你有没有想过,未来某天只需输入一段文字——比如“一只红色狐狸在雪地中奔跑,穿过松树林,阳光斑驳洒落”——系统就能自动生成一段流畅、高清、细节真实的3秒短视频…

张小明 2025/12/27 10:56:08 网站建设

可以看网站的浏览器站长工具源码

SUSE Linux Enterprise Server 10 安全防护与 AppArmor 应用详解 在当今数字化时代,服务器安全至关重要。SUSE Linux Enterprise Server 10 提供了一系列强大的安全功能和工具,帮助我们保障系统的稳定运行。下面将为大家详细介绍其安全相关的操作和 AppArmor 的应用。 1. 使…

张小明 2025/12/28 8:23:50 网站建设

虚拟主机购买网站wordpress 农业

目录 摘要 1 引言:Tiling的本质——从硬件约束到软件抽象 1.1 固定Shape:确定性优化的极致追求 1.2 动态Shape:灵活性的代价与收益 2 技术原理:架构设计理念的深度解析 2.1 Tiling结构体:Host-Device通信的核心载…

张小明 2025/12/27 21:06:16 网站建设