Skip to content
thanhtrung.ep

Review: Astro `output: server` + Cloudflare adapter cho một blog cá nhân đơn giản

Font:

Tôi chọn Astro với output: "server" thay vì static generation mặc định, vì muốn bài viết đọc thẳng từ Supabase lúc request — đăng bài mới không cần trigger build lại toàn site.

Điểm mạnh

  • Chuyển từ static sang server chỉ cần đổi output trong astro.config.ts và thêm adapter, không phải viết lại toàn bộ routing.
  • Adapter @astrojs/cloudflare map gần như trực tiếp sang Cloudflare Workers, không cần thêm lớp trung gian.
  • Vẫn giữ được các trang tĩnh (About, Shelves) không đổi gì — SSR chỉ áp dụng cho phần cần dữ liệu động.

Điểm yếu

  • Routing đa ngôn ngữ tự động của Astro (i18n.routing) không sinh route đúng như kỳ vọng cho một số page có sẵn — cuối cùng tôi phải tự làm folder [locale] và validate thủ công qua middleware, thay vì dùng cơ chế built-in.
  • Một vài tính năng của theme gốc (search Pagefind, dynamic OG image, content collection cũ) giả định site là static — phải tắt tạm khi chuyển sang đọc dữ liệu từ Supabase, chưa viết lại.
  • Deploy lên Cloudflare Workers đòi hỏi để ý kỹ cấu hình package manager (pnpm workspace) và dependency trực tiếp (wrangler) — xem case study riêng tôi viết về hai lỗi build gặp phải.

Đánh giá: 4/5. Đáng dùng nếu bạn thực sự cần SSR (dữ liệu động, không muốn rebuild); nếu blog vẫn hoàn toàn tĩnh thì static generation mặc định của Astro đơn giản hơn nhiều, không đáng đánh đổi.


What did you think of this post?

Hey! I'm thanhtrung.ep, the person behind this blog. You can read more about me, or subscribe by RSS.


Comments

0comments - posted directly on this page, no account needed
Preview shows exactly how your comment will appear.

No comments yet — leave the first one.