每 12 分鐘 OOM 一次:一個 id 屬性就讓 jsdom 留住整份文件
SSR 服務三小時掛了 75 次。原因是 jsdom 27 到 30.0.1 從常駐的 Window 解析出來的文件,只要含一個 id 屬性,整份文件就會一直留在記憶體裡,40 KB 的 HTML 留下 2.7 MB。30.1.0 已修好,附可執行重現與跨版本數字。
51 篇 · 最近更新 2026-10-25
SSR 服務三小時掛了 75 次。原因是 jsdom 27 到 30.0.1 從常駐的 Window 解析出來的文件,只要含一個 id 屬性,整份文件就會一直留在記憶體裡,40 KB 的 HTML 留下 2.7 MB。30.1.0 已修好,附可執行重現與跨版本數字。
同一個 Next.js 版本、同一份 benchmark,兩輪平均回應差了六倍。整理那幾份效能比較各自測了什麼,以及我們把 INP 修完,實驗室少了八成、真人沒有變快的那一次。
有獨立後端的內容網站用 Next.js,很多功能根本用不到。但有些行為關不掉,廣告曝光和 PV 的做法也得跟著改。記錄我在一個接手的 App Router 專案上看到的取捨。
後端上線後照慣例 purge CDN,結果頁面還是舊的。從一個沒意義的 query string 追到 Next.js 的整頁快取,最後決定把快取全部交給 CDN。理由跟效能無關,是出事的時候有沒有辦法手動清掉。
一支廣告設定 API 回 500,首頁跟著出不來。先用預設狀態保住頁面,四個月後把 render 前的即時依賴改成靜態設定。
把部落格從 Next.js 15 App Router + Contentlayer 搬到 Astro 6:34 篇文章、URL 全保留,搬家一天做完,真正卡住我的是 island 邊界和部署平台的四個坑。
Threads 帶來流量高峰的隔天,發現 Vercel Analytics 的免費方案看不到 UTM、資料只留一個月。記錄把分析工具搬到 Unraid 自架 Umami 的過程:Cloudflare Tunnel、DNS 搬遷、四個踩到的坑,跟並跑一週的對照數字。
同樣是 ALB 回 5xx,可能是容量被打爆、也可能是 Pod 輪替沒排空——處置方向完全相反。用 access log 的兩個欄位 30 秒分辨,加上 graceful shutdown 兩端對齊的完整設定。