什么是 SW 映射文件?
SW 映射文件通常指 Service Worker 的注册脚本(如 sw.js),用于实现网页离线缓存、推送通知、后台同步等 PWA(渐进式 Web 应用)功能。
SW 文件应放在哪里?
根据浏览器安全策略,Service Worker 文件必须满足以下条件:
- 位于网站的根目录或子目录中;
- 其作用域(scope)不能超出其所在目录层级;
- 必须通过 HTTPS(本地开发可使用
localhost)提供服务。
例如:
- 若将
sw.js放在网站根目录(/sw.js),则它可以控制整个网站; - 若放在
/app/sw.js,则默认只能控制/app/及其子路径。
如何注册 SW 文件?
在 HTML 页面中(通常在 <body> 底部或 <head> 中)添加如下 JavaScript 代码:
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then(reg => console.log('SW 注册成功:', reg))
.catch(err => console.error('SW 注册失败:', err));
});
}
常见问题
- Q:可以将 sw.js 放在 CDN 上吗?
A:不可以。SW 文件必须与页面同源(same-origin)。 - Q:修改 sw.js 后不生效?
A:浏览器会缓存 SW 文件。可通过更新版本号、强制刷新或使用开发者工具绕过缓存。