· static-sites / astro / hugo

Stack tốt nhất để xây dựng static blog trong năm 2026

Astro 6.4 là lựa chọn mặc định cho hầu hết static blog: DX tốt nhất, i18n tích hợp sẵn, zero JS mặc định. Hugo nếu có 10k+ trang. Bỏ qua Gatsby.

Bởi

1.993 từ · 10 phút đọc

Dùng Astro 6.4 cho hầu hết mọi thứ. Nếu site của bạn đủ lớn đến mức build time xuất hiện trên sprint board, hãy dùng Hugo v0.162.1 thay thế. Eleventy 3.1.5 đáng để biết nếu bạn muốn tối thiểu JavaScript và footprint cài đặt nhỏ. Bỏ qua Gatsby — nó thực chất đã không còn được duy trì. Next.js hoạt động được cho blog nhưng không được thiết kế cho việc đó, và cái giá phải trả thì rõ ràng.

Bài này dành cho ai

Các developer làm static blog muốn chọn framework trong năm 2026 mà không phải tốn cả tuần để chạy benchmark. Nếu site của bạn có server component, API route theo từng request, hoặc ISR, bài so sánh này sẽ bỏ sót các đánh đổi của bạn — bài so sánh nền tảng deploy full-stack sẽ phù hợp hơn.

Cách chúng tôi đánh giá

Số liệu tốc độ build lấy từ benchmark năm 2022 của Zachary Leatherman (4k file, nội dung giống nhau, cùng một máy). Dữ liệu mức độ dùng lấy từ State of JS 2024 và xu hướng download trên npm. Chúng tôi tự kiểm tra DX trực tiếp — scaffold dự án, thiết lập nội dung, kết nối i18n.

Version được ghi nhận tại thời điểm đăng bài: Astro 6.4.0 (28 tháng 5, 2026), Hugo v0.162.1 (28 tháng 5, 2026), Eleventy v3.1.5 (18 tháng 3, 2026), SvelteKit 2.61.1 (24 tháng 5, 2026), Next.js v16.2.6 LTS (7 tháng 5, 2026), Gatsby v5.16.1 (10 tháng 2, 2025).

Các static blog stack

Astro 6.4

Astro là lựa chọn mặc định đúng đắn cho hầu hết static blog trong năm 2026. Nó không ship JavaScript nào theo mặc định — các component được render ra HTML lúc build, trừ khi bạn chủ động chọn client-side hydration. Quyết định đó thôi đã đặt nó trước mọi framework dựa trên React cho các site nội dung mà page weight quan trọng.

Content Layer API (ra mắt trong Astro 5.0) cho kết quả benchmark nhanh hơn tới 5× cho các site nặng Markdown so với cách tổ chức nội dung cũ của Astro. Trong bài test 4k file của Leatherman, Astro đạt ~22.9s — không nhanh như Hugo, nhưng đủ để không phải là thứ làm CI của bạn chậm lại.

DX là mạnh nhất trong nhóm này. astro add kết nối integration chỉ trong một lệnh. i18n tích hợp sẵn ra mắt từ v3 và ngày càng tốt hơn: bạn định nghĩa locale trong astro.config.mjs, thêm tiền tố route [locale], và Astro xử lý phần routing. Không cần thư viện bên thứ ba. MDX hoạt động ngay từ đầu.

Mức độ dùng xác nhận điều này. Downloads tăng 2.5× trong năm 2025, đạt khoảng 900K/tuần. Astro xếp thứ 4 trong danh sách framework được ngưỡng mộ nhất của Stack Overflow 2025.

Deploy ở bất kỳ đâu nhận static file: Cloudflare Pages, Vercel, Netlify, GitHub Pages. Không bị trói buộc vào nền tảng nào.

Chọn Astro nếu: bạn đang bắt đầu blog mới, bạn muốn dùng component và MDX, hoặc bạn quan tâm đến việc ship ít JavaScript nhất có thể.

Hugo v0.162.1

Hugo là vô địch tốc độ build không ai tranh cãi. Benchmark của Leatherman đo được 0.68s cho 4k trang — so với ~22.9s của Astro trên cùng bài test.

“Hugo remains the undisputed speed champ — no question about that.” — Zachary Leatherman, 2022

Với một blog cá nhân 50 bài, sự chênh lệch này không đáng kể. Với các site documentation, kho lưu trữ tin tức lớn, hoặc bất kỳ site nào mà build chậm ảnh hưởng thực sự đến tốc độ phát triển, Hugo là công cụ đúng đắn. Nó cũng không ship JavaScript nào theo mặc định và có i18n tích hợp sẵn trưởng thành hơn bất kỳ framework nào trong danh sách này — Hugo đã có từ nhiều năm trước.

Cái giá phải trả là Go templates. Nếu bạn chưa từng viết Go, cú pháp template — {{ range .Pages }}, {{ with .Site.Params.something }} — sẽ cần thời gian làm quen. Không khó, nhưng không phải JSX. Hugo không có tương đương của MDX; bạn có shortcode và partial template, nhưng không có cách ghép component theo kiểu React. Data pipeline tùy chỉnh là Go module hoặc script ngoài, không phải npm package.

Chọn Hugo nếu: tốc độ build quan trọng với bạn, bạn có 10k+ trang, hoặc bạn muốn một file binary nhỏ không phụ thuộc Node.js. Xem thêm Astro vs Hugo nếu bạn đang phân vân giữa hai lựa chọn này.

Eleventy 3.1.5

Eleventy là framework thành thật nhất trong danh sách này về những gì nó làm và không làm. Nó không ship JavaScript nào. Cài đặt chỉ 21.4 MB — so với các framework có node_modules 300 MB+. Thời gian build là 1.93s cho 4k file trong benchmark của Leatherman, chỉ đứng sau Hugo.

v3 chuyển sang ESM làm ưu tiên, cắt đứt hoàn toàn với CJS. Hệ sinh thái plugin xử lý MDX và syntax highlighting, nhưng những thứ này không tích hợp sẵn — bạn đang tự lắp ghép một stack nhỏ thay vì chấp nhận các mặc định có sẵn.

Điểm thiếu lớn nhất là i18n. Eleventy không có routing đa ngôn ngữ tích hợp sẵn. Có các cách tiếp cận từ cộng đồng (thư mục output riêng, file dữ liệu tùy chỉnh, thủ thuật permalink) nhưng không cách nào gọn như cách triển khai native của Hugo hay Astro. Nếu i18n là yêu cầu bắt buộc và bạn muốn dùng Eleventy, hãy dự trù thêm thời gian để setup.

Chọn Eleventy nếu: bạn muốn footprint nhỏ nhất có thể, bạn đã quen với các tùy chọn template Nunjucks/Liquid/JavaScript của nó, và i18n không phải yêu cầu cốt lõi. Xem thêm Astro vs Eleventy để so sánh chi tiết.

SvelteKit 2.61.1

SvelteKit là lựa chọn tốt nếu bạn đã đang viết Svelte. DX ổn, build nhanh, và adapter-static với prerender = true cho bạn một static site. Nếu bạn chưa ở trong hệ sinh thái Svelte, đây là lựa chọn khó thuyết phục hơn cho riêng một blog.

Các điểm yếu: không có i18n tích hợp sẵn (thư viện cộng đồng như svelte-i18n hoạt động được, nhưng không phải native của framework), và SvelteKit xếp thứ tư trong mức độ sử dụng chuyên nghiệp ở State of JS 2024 — không phải ngoài lề, nhưng rõ ràng thua React-based framework và Astro về mindshare. Component runtime mặc định ship xuống client, tạo thêm trọng lượng mà Astro và Eleventy tránh được.

Người dùng SvelteKit báo cáo mức độ hài lòng cao trong State of JS 2024, vậy nên các developer dùng nó thường thích nó. Vấn đề là yêu cầu cơ bản: với một dự án blog mới không có ngữ cảnh Svelte, Astro làm được nhiều hơn ngay từ đầu.

Chọn SvelteKit nếu: bạn đã là Svelte developer và muốn stack nhất quán. Nếu không, không có lý do thuyết phục để chọn nó hơn Astro cho một blog.

Next.js 16.2.6 (static export)

Next.js có thể tạo ra một static blog. Đặt output: 'export' trong next.config.js và nó sẽ tạo file HTML. Nó hoạt động. Nhưng tài liệu cho chế độ này nằm sâu ba trang trong mục “Guides”, và ghi chú ở đầu trang là:

“ISR is not compatible with output: 'export'.”

Đó là dấu hiệu rõ ràng. Next.js là một React application framework đã thêm static export như một lối thoát. Runtime mặc định ship ~80 KB React đến mỗi người dùng. Thời gian build trong bài test 4k file của Leatherman là ~70.6s (file routing) — chậm hơn mọi framework khác trong danh sách. App Router thêm độ phức tạp mà một blog không cần.

Nếu team của bạn đã đầu tư sâu vào Next.js và muốn tooling nhất quán, điều đó ổn. Nhưng nếu bạn bắt đầu từ đầu và mục tiêu là một blog nhanh và dễ duy trì, bạn đang đi ngược lại thiết kế của framework.

Chọn Next.js nếu: blog của bạn nằm trong một ứng dụng Next.js lớn hơn và việc hợp nhất tooling quan trọng hơn sự phù hợp của framework.

Gatsby v5.16.1

Đừng dùng Gatsby cho dự án mới. Bản phát hành cuối cùng là ngày 10 tháng 2 năm 2025 — hơn 15 tháng trước so với thời điểm viết bài này. Thread GitHub Discussions về maintenance mode đã mở từ năm 2024. Netlify, đơn vị đã mua lại Gatsby, đã chuyển trọng tâm kỹ thuật sang nơi khác.

Hệ sinh thái đang suy giảm: các plugin được duy trì tích cực năm 2023 đã tích lũy nhiều issue chưa được trả lời. Nếu bạn có site Gatsby hiện tại, nó vẫn chạy, nhưng dự trù thời gian để migrate sang Astro hoặc Eleventy là quyết định thận trọng.

So sánh

StackVersionBuild: 4k trangi18nMDXJS mặc định
Astro6.4.0~22.9sTích hợp sẵnTích hợp sẵn0 KB
Hugo0.162.10.68sTích hợp sẵnQua shortcode0 KB
Eleventy3.1.51.93sQua pluginQua plugin0 KB
SvelteKit2.61.1Thư viện cộng đồngSvelte runtime
Next.js16.2.6~70.6sQua configTích hợp sẵn~80 KB React

Benchmark build từ Leatherman 2022 (4k file, cùng máy và nội dung).

Kết luận

Dùng Astro 6.4 cho hầu hết blog. DX tốt nhất, i18n tích hợp sẵn, không ship JavaScript theo mặc định, cộng đồng năng động. Đây là framework đưa ra nhiều đánh đổi đúng hướng nhất cho việc xuất bản nội dung.

Dùng Hugo nếu tốc độ build không thể thương lượng. 10k+ trang, site documentation, CI pipeline mà thời gian build là chi phí thực sự. Cú pháp Go template là cái giá bạn phải trả. Đó là giá hợp lý.

Dùng Eleventy nếu bạn muốn tooling tối giản. Không có i18n tích hợp sẵn, nhưng mọi thứ khác về nó đều gọn gàng và thành thật.

SvelteKit chỉ khi bạn đã đang viết Svelte. Không có lợi thế rõ ràng hơn Astro trong trường hợp khác.

Next.js chỉ khi đó đã là app framework của bạn. Không phải công cụ được thiết kế cho blog.

Đừng dùng Gatsby. Không còn được duy trì.

Lưu ý

Benchmark build lấy từ bài test năm 2022 của Leatherman (4k file). Content Layer API của Astro (ra mắt cuối năm 2024) đã cải thiện đáng kể lộ trình phát triển của Astro — framework đã nhanh hơn kể từ khi những con số đó được công bố. Ưu thế tốc độ build của Hugo bền vững vì biên dịch Go template về cơ bản nhanh hơn JavaScript bundler pipeline; khoảng cách tương đối có thể thu hẹp nhưng khó có thể xóa bỏ.

Nền tảng deploy không phải quyết định của framework. Astro, Eleventy, và Hugo đều xuất ra HTML, CSS, và JavaScript thuần. Chúng chạy trên Cloudflare Pages, Vercel, Netlify, GitHub Pages, hoặc bất kỳ CDN nào mà không cần chỉnh sửa. Lựa chọn framework không trói buộc bạn vào một nền tảng.

Lưu ý affiliate: bài viết này chứa affiliate link đến Vercel và Netlify. Các lựa chọn hàng đầu (Astro, Hugo, Eleventy) không có quan hệ affiliate với toolchew. Các xếp hạng phản ánh benchmark và kinh nghiệm thực tế của chúng tôi.

Tài liệu tham khảo