Web Worker 不可用?按平台與環境排查
故障排查瀏覽器相容性Web Worker
你看到的症狀
Any3D 底部出現黃色警告:「目前瀏覽器不支援 Web Worker」。預覽可能仍可用,但大檔案處理容易卡死頁面,紋理壓縮、圖片轉模型等 Worker 路徑無法啟用。
Web Worker 讓耗時計算在背景執行緒執行。Any3D 的紋理壓縮與部分轉換流程依賴 Worker + OffscreenCanvas + createImageBitmap 三件套。
常見原因
| 原因 | 典型場景 |
|---|---|
| 非安全上下文 | 用 file:// 開啟、HTTP 內網頁(非 localhost) |
| 瀏覽器過舊 / WebView | 舊版系統瀏覽器、App 內嵌頁 |
| CSP 限制 | 企業入口 iframe、零信任用戶端注入 worker-src |
| 擴充套件攔截 | 隱私外掛阻止 Worker 或 blob: URL |
| 網路快取異常 | 代理/VPN 回傳不完整 Worker 腳本 |
| 裝置監管 | 受管理設定檔禁用背景腳本 |
按平台排查
Windows
- 必須透過 HTTPS(
https://any3d.cc)訪問,不要用本地 HTML 檔案。 - Edge 企業原則:
Computer Configuration → Administrative Templates → Microsoft Edge中檢查是否限制 Worker 或第三方 Cookie(間接影響部分 Worker 載入)。 - Windows 家庭安全:子帳戶 Web 限制可能導致 Worker 建立失敗。
macOS
- Safari / Chrome 均需 macOS 12+ 且瀏覽器為近期版本。
- 螢幕使用時間 → 內容與隱私 → 若啟用「限制成人網站」或自訂過濾,可能誤傷 Worker 腳本域名。
- 公司 MDM 設定檔若禁用「跨站台追蹤」以外的腳本能力,請聯絡 IT。
Linux
- 確認存取 URL 為 HTTPS;企業 Squid 代理需允許
blob:與worker-src相關請求。
iOS / Android
- 不要在微信/Line 內建瀏覽器完成大檔案處理;用系統瀏覽器開啟。
- iOS 低電量模式通常不禁 Worker,但舊 WebKit 可能缺失 API——保持系統更新。
- Android WebView 版本過舊(系統 WebView 未更新)會導致 Worker 不可用:Play 商店更新「Android System WebView」。
網路、VPN 與企業內網
| 場景 | 說明 |
|---|---|
| 公司 VPN | 部分 VPN 強制 HTTPS 解密並注入 CSP,需 IT 放行 Worker |
| 內網 SSO 入口 iframe | 外層頁面 CSP 可能禁止 worker-src blob:,需巢狀頁單獨設定或新分頁開啟 Any3D |
| 反向代理 | Nginx/閘道錯誤設定可能導致 Worker 腳本 MIME 類型不對 |
| 家長路由器 DNS 過濾 | 少見於 Worker,但若整站被降級到 HTTP 鏡像,Worker 會失效 |
自行測試:中斷 VPN、切換 4G/5G 熱點,看警告是否消失。
企業 CSP 參考(給 IT)
若 Any3D 被 iframe 嵌入,建議允許:
worker-src 'self' blob:;
script-src 'self' 'unsafe-eval' blob:;
個人使用者無需手動改 CSP。
逐步修復(通用)
- 確認 HTTPS 訪問,重新整理頁面(Ctrl+F5 / Cmd+Shift+R)。
- 無痕視窗排除擴充套件。
- 更新瀏覽器與(Android)系統 WebView。
- 新分頁直接開啟 Any3D,避免巢狀在企業入口 iframe 內。
快速自測
typeof Worker !== "undefined";
回傳 true 僅表示 API 存在;Any3D 還需要 OffscreenCanvas 與 createImageBitmap 齊備才走完整 Worker 路徑。
沒有 Worker 時的影響
| 功能 | 影響 |
|---|---|
| 頂點壓縮(Draco 等) | 通常仍可用(主執行緒 + WASM) |
| 紋理 / KTX2 壓縮 | Worker 路徑不可用,大檔案易卡頓 |
| 圖片轉模型 | 可能降級或效能顯著下降 |
小結
Web Worker 警告多源於 非 HTTPS、舊 WebView、企業 CSP/VPN、擴充套件攔截。按平台更新瀏覽器、換網路驗證、請 IT 檢查 iframe/CSP,通常可恢復背景處理能力。