我剛開始看 Astro 時,最容易被「幾乎不送 JavaScript」吸引,數字漂亮得很難不心動。可是真的把內容網站做起來後,最常卡住我的反而是字型、CSP、CMS 更新和 preview。Astro 6 Beta 讓我有點開心,因為它終於把焦點放到這些不太適合做 benchmark、卻每天都會碰到的瑣事。
Astro 一直很適合部落格、文件和品牌網站。它預設先產生 HTML,只在真的需要互動時才把 JavaScript 送到瀏覽器,這也是 Islands 架構最容易理解的地方。
Astro 6 Beta 加入新的開發伺服器、Fonts API、CSP 支援和 Live Content。Fonts API 讓字型載入有比較統一的處理方式;CSP 能協助限制頁面可以執行哪些來源的程式;Live Content 則讓內容不一定要等到重新建置才能更新。
這些功能不會讓 Astro 突然變成另一個 Next.js。Astro 的重心仍然是內容網站,只是把字型、安全和動態內容這些常見需求補得更完整。
以部落格來說,多數頁面其實只有文章和少量互動。Astro 的想法是先把這些頁面當 HTML 處理,需要搜尋框、留言或互動圖表時,再局部載入元件。和整站以 React 為中心的做法相比,它少了一些全端整合,也少了一些不必要的瀏覽器 JavaScript。
Beta 畢竟還不是穩定版,適合拿來了解方向,不一定要立刻把正式網站搬過去。尤其 adapter、CMS 或 Markdown plugin 是否跟得上,往往比 release note 上的新功能更實際。
Live Content 特別值得內容團隊留意。傳統靜態網站更新文章後要重新 build,內容愈多等待愈久;若資料能在請求時取得,就能縮短發布時間。代價是頁面不再完全靜態,快取和內容來源的穩定性也要一起考慮。
這裡沒有哪一種一定比較先進。個人部落格一天更新一次,build 五分鐘可能完全可以接受;新聞或價格頁面若每分鐘變動,硬等整站重建才奇怪。我會先量發布頻率和可接受延遲,再決定哪些 collection 真的需要 live。
CSP 也是類似情況。開啟一個選項很容易,真正花時間的是盤點 analytics、嵌入內容和 inline script。若 beta 階段要試,我會先用 report-only 收集違規,再逐步收緊,避免一次把登入或付款頁面的必要資源擋掉。