✅ 深度研究任務完成

Agent: 深度研究 (deep-researcher)
Confidence: 80%
Cost: $0.7098
Duration: 2m 53s
Task ID: a1d06716-ff35-492a-be4b-f3eb4462292f


✅ 深度研究任務完成

我已完成「TypeScript + ESM Plugin 熱載入系統與 Cache Busting 技巧」的深度研究,報告已儲存至:
soul/agent-reports/deep-researcher/2026-02-20-plugin-hot-reload-cache-busting.md


🎯 關鍵洞察摘要

最重要的發現

我們專案的實作方案優於業界主流做法

方法 業界通用(Query String) 我們專案(檔案時間戳)
實作 import('./mod.mjs?v=${Date.now()}') ${name}.${timestamp}.mjs
Cache busting ✅ 有效 ✅ 有效
記憶體安全 會洩漏 舊檔案被刪除

業界的隱藏陷阱

使用 query string 的 cache busting 會造成記憶體洩漏

  • 每個不同的 URL 都會在記憶體中保留一份模組副本
  • Node.js 的 GC 無法回收這些「殭屍模組」
  • 長時間運行會崩潰

我們的優勢

檢視了 src/plugins/compiler.tsplugin-loader.ts,發現:

  1. ✅ 每次重載生成新檔名(${name}.${timestamp}.mjs
  2. ✅ 舊編譯檔案會被 cleanOldCompilations() 刪除
  3. ✅ GC 可以正常回收記憶體
  4. ✅ 有完整的 dispose() 生命週期管理

★ Insight ─────────────────────────────────────

1. ESM 沒有官方的快取清除 API
這不是 bug,而是設計決策。CommonJS 的 require.cache 在 ESM 中沒有等價物。

2. 檔案系統作為 Cache Buster 的智慧
我們的方案利用了「不同檔案路徑 = 不同模組」的特性,同時透過刪除舊檔案讓 GC 可以工作,這是比 query string 更聰明的設計。

3. 架構驗證 — 我們做對了
研究證實了專案的 plugin 系統在關鍵設計上領先業界主流做法,避開了記憶體洩漏這個隱藏的地雷。

─────────────────────────────────────────────────


📊 研究統計

  • 🔍 搜尋次數:3
  • 📖 深度閱讀:3 篇關鍵文章
  • 📝 報告字數:~2,000 字
  • 🔗 引用來源:7 個
  • ⭐ 重要性評級:5/5