在开发基于 Service Worker(SW) 的 Web 应用或 PWA(渐进式 Web 应用)时,正确放置 SW 映射文件(通常为 sw.js 或类似名称)至关重要。
标准存放位置
Service Worker 文件必须放在其作用域(scope)的根目录下。例如:
- 如果你希望 SW 控制整个网站(
https://example.com/),则sw.js应放在网站根目录下。 - 若只控制
/app/路径,则可将sw.js放在/app/sw.js,并在注册时指定作用域。
注册示例
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(reg => console.log('SW 注册成功:', reg))
.catch(err => console.error('SW 注册失败:', err));
}
注意事项
- SW 文件必须通过 HTTPS 提供(本地
localhost除外)。 - 路径必须与注册时的 URL 匹配,否则会因作用域限制导致注册失败。
- 避免将 SW 文件放在子目录中却不调整注册路径或作用域。
正确放置 SW 映射文件是实现离线缓存、消息推送和后台同步等功能的第一步。