我上個月上線了 china-sourcing-agents.com,一個做電子和物聯網硬件采購代理的B2B站點。11種語言、邊緣動態生成OG圖、零后端的全文搜索、表單直接發郵件到我收件箱——整套基礎設施月成本:0美元。
以下是真正讓我意外的幾個點。
![]()
【技術棧】Astro 6 框架,Cloudflare Pages 托管(靜態資源+邊緣Worker),Tailwind CSS v4 樣式,MDX + Zod 4 內容集合,satori 做OG圖文字渲染,@resvg/resvg-wasm 在邊緣把SVG轉PNG,Pagefind 構建時生成全文搜索索引,Resend 發事務郵件,Cloudflare Turnstile 防機器人。幾乎全靜態,唯一動態端點是詢盤表單。
【意外一:開發環境和生產環境終于一致了】這是我之前最懷疑的,結果是真的。Astro 6(2026年3月發布)和Cloudflare合作,讓 astro dev 直接跑在 workerd 里——就是Cloudflare Workers用的同款JavaScript運行時。實際效果:本地能跑,線上就能跑。邊緣運行時的開發環境bug消失了。
以前我踩過經典坑:Node.js里能跑的代碼(process.env、fs、Node流)部署到Workers就靜默崩潰。現在從 npm run dev 開始,運行時就是同一個。配置極簡:output設server,adapter用@astrojs/cloudflare,imageService選compile,完事。
【意外二:11種語言×5類內容,一個glob loader搞定】站點支持英語、德語、法語、日語、韓語、西班牙語、意大利語、葡萄牙語、荷蘭語、俄語、波蘭語。每門語言都有獨立的指南、博客、案例、服務、行業內容——總共約250個MDX文件。
Astro 6的Content Layer API讓整套多語言結構變成每類內容一個集合定義。glob loader按模式匹配,所有語言的同主題文件(比如en/how-to-source-from-china.mdx、de/...、ja/...)都在同一個guides集合里。一個helper函數按語言前綴過濾,把entry.id里 locale/ 前面的部分切掉當slug用。Zod 4做強類型校驗,內容層全類型安全。
【意外三:OG圖在邊緣實時渲染,不是構建時預生成】以前做多語言站,OG圖要么構建時預生成(語言×頁面數量爆炸),要么干脆不做。這次用satori在邊緣跑:請求來時,根據當前頁面數據實時渲染SVG,再用resvg-wasm轉成PNG返回。延遲可接受,內存占用可控,不需要把幾千張圖塞進構建產物。
【意外四:全文搜索零后端,構建時索引】Pagefind在構建階段掃描所有靜態HTML,生成搜索索引。用戶搜索時直接下載索引文件,在瀏覽器里跑查詢。沒有搜索服務要維護,沒有API要付錢,11種語言的索引加起來幾百KB。
【意外五:表單直接發郵件,沒有數據庫】詢盤表單用Cloudflare Worker處理,Resend發郵件到我郵箱。數據不進數據庫,沒有存儲成本,沒有后臺要登錄。Turnstile驗證防垃圾,簡單直接。
整套下來,免費額度完全夠用。Cloudflare Pages的構建和托管、Workers的請求數、Resend的日發信量,都在免費層內。唯一可能未來要付的是Resend,但日發信量到幾百封之前都不用動。
這個組合讓我重新思考"靜態站點"的邊界。不是什么都得SSR,不是什么都得數據庫。把計算推到構建時和邊緣,很多傳統需要后端的功能,現在可以用更簡單的架構解決。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.