← Tất cả bài viết

[ Blog ]

11 tháng 7, 2026

11 phút đọc

Chuyên mục: Góc nhìn

So Sánh Headless CMS: Sanity, Prismic, Strapi, WordPress

So sánh headless CMS Sanity, Prismic, Strapi và WordPress — trải nghiệm dev, hosting, chi phí và UX cho biên tập, kèm gợi ý chọn cái nào cho từng dự án.

Headless CMSSanityStrapiWordPressNext.jsFullstack
So Sánh Headless CMS: Sanity, Prismic, Strapi, WordPress

Chọn tầng nội dung (content layer) là quyết định sống lâu hơn cả ngày ra mắt. Hiệu ứng chuyển động được trầm trồ một lần; còn CMS là thứ đội của bạn động vào mỗi tuần, suốt nhiều năm. Vì vậy bài so sánh headless CMS này đặt bốn nền tảng mà khách hàng hay hỏi nhất — Sanity, Prismic, Strapi và WordPress — cạnh nhau theo đúng tiêu chí quyết định dự án: trải nghiệm lập trình viên, cách mô hình hóa nội dung có cấu trúc, hosted hay tự host, mô hình chi phí, và UX cho người biên tập không rành kỹ thuật. Không có kết luận "CMS tốt nhất", vì không tồn tại thứ đó — chỉ có cái phù hợp nhất với đội ngũ, ngân sách và người sẽ sửa nội dung sau khi bàn giao. Tôi triển khai cả bốn, và chính website này chạy CMS tự host trên Postgres/Prisma, nên các đánh đổi bên dưới là thứ tôi trả giá trong dự án thật.

Bốn nền tảng, nhìn nhanh

Cả bốn đều là headless CMS đúng nghĩa: nội dung nằm ở backend, bạn fetch qua API, và render bằng framework bạn kiểm soát (ở đây luôn là Next.js App Router). Điểm khác nhau nằm ở quyền sở hữumô hình biên tập.

SanityPrismicStrapiWordPress (headless)
Mô hìnhSaaS hostedSaaS hostedMã nguồn mở, tự host hoặc CloudMã nguồn mở, tự host
Cấu trúc nội dungCấu trúc hoàn toàn, schema-as-code"Slices" có cấu trúcCấu trúc hoàn toàn, schema ở admin/codeBài viết + custom field (ACF)
APIGROQ + GraphQLREST + GraphQLREST + GraphQLWPGraphQL hoặc REST
Dữ liệu ở đâuCloud của SanityCloud của PrismicDatabase của bạnMySQL của bạn
Độ quen thuộcHiện đại, hợp devThân thiện marketingGọn, tùy biếnAi cũng biết
Bản miễn phíRộng rãi, dùng prod đượcCó (1 user)Miễn phí (MIT, tự host)Miễn phí (bạn trả hosting)
Hợp nhất vớiDesign system có cấu trúcĐội marketing/landingSở hữu dữ liệu, API tùy biếnĐội đã dùng WP, nội dung lớn

Phần còn lại của bài mổ xẻ từng cột với những thứ bảng tính năng thường giấu.

Trải nghiệm dev & mô hình hóa nội dung

Đây là chỗ bốn nền tảng khác nhau rõ nhất khi dùng hằng ngày.

Sanity xem schema là code. Bạn định nghĩa document và object type bằng TypeScript, còn Studio (admin của nó) chính là một app React bạn có thể mở rộng. Truy vấn dùng GROQ — một ngôn ngữ projection cho phép bạn nặn đúng response mà component cần, không over-fetch. Với một design system có nội dung tái sử dụng, cấu trúc sâu, đây là CMS "hợp dev" nhất trong bốn. Tôi phân tích một dự án đầy đủ trong hướng dẫn thực chiến Next.js + Sanity.

Prismic xoay quanh Slices — các khối trang tái sử dụng bạn định nghĩa cục bộ bằng Slice Machine, đẩy lên repo, và người biên tập kéo-thả để ghép thành trang. Ánh xạ schema-sang-component là một-một, nên trải nghiệm page-builder ra rất nhanh. Đây là lựa chọn thân thiện nhất cho đội marketing muốn tự lắp landing page mà không cần dev can thiệp.

Strapi cho bạn Content-Type Builder trong admin (hoặc schema JSON trong code) và tự sinh endpoint REST lẫn GraphQL. Vì là Node và mã nguồn mở, bạn có thể nhảy vào codebase để thêm controller, middleware hay lifecycle hook tùy biến — nó vừa là CMS vừa là một backend mở rộng được, nên đội nào muốn API riêng nằm dưới nội dung thường chọn nó.

WordPress headless giữ trình biên tập ai cũng biết và phơi nội dung qua WPGraphQL (lựa chọn mặc định) hoặc REST API có sẵn. Mô hình hóa nội dung có cấu trúc thường phải dùng Advanced Custom Fields; nó ít "structured-first" hơn ba cái kia, nhưng hệ sinh thái plugin và sự quen thuộc thì không đối thủ. Tôi viết chi tiết kiến trúc decoupled trong headless WordPress + Next.js cho web chuyển động.

Hosted hay tự host — bạn thật sự bảo trì cái gì

Trục này quyết định nhiều hơn bất kỳ tính năng nào. Sanity và Prismic là SaaS hosted: họ lo database, CDN, backup và scaling. Bạn không bao giờ vá server — đổi lấy việc mất quyền kiểm soát và data residency để khỏi lo vận hành. Strapi và WordPress mặc định tự host: bạn sở hữu database và máy chủ, tức toàn quyền kiểm soát và không phải trả phí theo đầu người, nhưng bạn cũng gánh cập nhật, vá bảo mật, backup và uptime (Strapi cũng có Cloud quản lý nếu bạn ngại vận hành).

Tôi chạy CMS tự host trên chính site này, nên xin nói thẳng về cái giá ẩn: tự host không "miễn phí". Phải có người giữ database dưới giới hạn kết nối, cache các lượt đọc để framework không đập vào backend ở mọi request, và làm chủ việc deploy. Đó là trách nhiệm thật, lặp lại — tôi ghi lại hai trong số đó ở vì sao Next.js cứ gọi CMS ở mọi requestvì sao Neon hết giới hạn kết nối dù ít traffic. Chọn tự host để có quyền kiểm soát và sở hữu dữ liệu; chọn hosted để biến những việc đó thành chuyện của người khác.

Mô hình chi phí (kiểm tra trước khi chốt)

Giá thay đổi liên tục — hãy coi đây là hình dạng của từng mô hình năm 2026, và xác nhận lại trên trang giá hiện tại của nhà cung cấp trước khi lập ngân sách. Điều quan trọng là cách mỗi bên tính tiền, vì đó mới là thứ tăng theo quy mô đội.

Nền tảngMô hìnhBản miễn phíGói trả phí thấp nhấtCái làm chi phí tăng
SanitySaaS theo seatGói free dùng prod đượcGrowth ~$15/seat/thángSố seat; add-on (SSO, thêm dataset) đắt nhanh
PrismicSaaS theo bậc$0, 1 userStarter ~$10/thángSố user + bậc gói (Medium ~$150, Platinum ~$675)
StrapiMã nguồn mở + Cloud tùy chọnMiễn phí (MIT, tự host)Cloud từ ~$18/project/thángBậc Cloud; license Enterprise tính riêng
WordPressMã nguồn mở + hostingPhần mềm miễn phíHosting từ ~$11–49/thángBậc managed hosting + plugin

Hai cái bẫy đáng nêu tên. Với Sanity, gói gốc rẻ nhưng add-on enterprise (SAML SSO, thêm dataset) tăng vọt — hãy dự trù nếu bạn sẽ cần. Với Strapi, hosting và license tính năng CMS là hai luồng thanh toán độc lập, nên lõi mã nguồn mở "miễn phí" cộng tính năng enterprise cộng Cloud quản lý có thể đắt hơn một gói SaaS phẳng. WordPress thì phần mềm free, nhưng bạn luôn trả tiền hosting ở đâu đó — Cloudways, Kinsta, WP Engine hay gói Atlas.

Nguồn cho các con số trên: giá Sanity, giá Prismicgiá Strapi CMS.

UX biên tập — ai sửa nội dung sau khi ra mắt

Người sửa nội dung mỗi ngày hiếm khi là người chọn CMS, và chính sự lệch pha đó là nơi các nền tảng nội dung "chết yểu". Hãy khớp công cụ với người biên tập:

  • Đội marketing lắp landing page cần kéo-thả ghép trang → Prismic Slices hoặc mẫu page-builder của Sanity.
  • Người viết/biên tập đã quen WordPress thì nên giữ nó → WordPress headless nghĩa là không phải đào tạo lại; họ giữ dashboard, người dùng nhận frontend hiện đại.
  • Đội product/design tư duy theo component có cấu trúc → trình biên tập có cấu trúc của Sanity ánh xạ gọn gàng vào design system.
  • Đội cần nội dung nằm dưới một app/API tùy biếnStrapi, nơi CMS và logic backend sống chung.

Chọn X nếu… — gợi ý theo từng loại dự án

Bản rút gọn, theo hồ sơ dự án:

  • Chọn Sanity nếu bạn xây site/design system có cấu trúc, hướng component, muốn trải nghiệm biên tập real-time hợp dev nhất — và bạn ổn với SaaS hosted. Đây là mặc định của tôi cho dự án làm mới từ đầu.
  • Chọn Prismic nếu đội marketing cần tự lắp và xuất bản landing page độc lập, và bạn muốn một page builder dựa trên Slice gọn gàng mà không phải vận hành hạ tầng.
  • Chọn Strapi nếu sở hữu dữ liệu là quan trọng — bạn buộc phải tự host, giữ nội dung trong database của mình, hoặc mở rộng CMS thành API Node tùy biến. Đây là lựa chọn khi "làm chủ dữ liệu" là yêu cầu bắt buộc.
  • Chọn WordPress headless nếu đội đã sống trong WordPress, bạn có thư viện nội dung lớn sẵn có, hoặc đang hiện đại hóa frontend mà không muốn đào tạo lại biên tập viên — bỏ theme PHP, giữ dashboard.

Không có đáp án đúng tuyệt đối ở đây, và dev nào đưa ra một đáp án mà không hỏi ai sẽ sửa nội dung thì đang bán vùng an toàn của họ, không phải sự phù hợp của bạn.

Chúng tôi chạy gì — và vì sao nó soi sáng lựa chọn

Nói thẳng cho minh bạch: site này chạy CMS tự host trên Postgres qua Prisma, phục vụ bởi Next.js App Router. Frontend khai báo schema, CMS tự sinh form admin, và nội dung nằm trong database tôi sở hữu — về kiến trúc là cùng tư thế với Strapi, chọn vì tôi muốn toàn quyền với mô hình nội dung và không phải trả phí theo đầu người. Với dự án khách hàng, tôi hay chọn Sanity (có cấu trúc, hosted, ra nhanh) hoặc WordPress headless (khi đội đã ở đó) — chính vì thế tôi có thể so sánh trung thực thay vì bênh vực một nhà cung cấp.

Ý cốt lõi của cả cách làm fullstack này: CMS là một lựa chọn theo từng dự án, không phải phần cố định trong stack của tôi. Cùng một đối tác tích hợp bất kỳ cái nào phù hợp, cache đúng cách, nối webhook vào revalidation, và làm cho trải nghiệm biên tập là thứ đội bạn thật sự còn muốn dùng một năm sau.

FAQ

Headless CMS nào tốt nhất cho site Next.js?

Cả bốn đều chạy tốt với Next.js. Với dự án có cấu trúc, hướng component, Sanity mượt nhất; với đội marketing lắp landing page, Prismic; với nhu cầu sở hữu dữ liệu, Strapi tự host; với đội đã dùng WordPress, WordPress headless. Framework không phải rào cản — người biên tập và khẩu vị vận hành của bạn mới là.

CMS tự host (Strapi/WordPress) có rẻ hơn hosted (Sanity/Prismic) không?

Chỉ khi bạn không tính thời gian của mình. Tự host bỏ phí SaaS theo seat nhưng thêm cập nhật, backup, bảo mật và uptime — công việc thật, lặp lại. SaaS hosted tốn tiền để những vấn đề đó biến mất. Với đội nhỏ không có người vận hành, hosted thường rẻ hơn về tổng thể.

Về sau đổi headless CMS được không?

Được, nhưng là việc thật — phải migrate nội dung và viết lại tầng fetch/render. Vì frontend đã tách rời, phần lớn component của bạn sống sót; còn truy vấn API và ánh xạ nội dung thì không. Chọn đúng ngay từ đầu rẻ hơn nhiều so với migrate.

Bạn có làm với CMS chúng tôi đang có không?

Có. Năng lực fullstack nghĩa là tôi xây trên bất kỳ CMS nào bạn đang chạy — hoặc tư vấn và dựng cái mới. Kỷ luật tích hợp (schema, cache, revalidation, UX biên tập) như nhau ở cả hai hướng.


Chưa chắc tầng nội dung nào hợp dự án của bạn? Đó là cuộc trao đổi về phạm vi, không phải tung đồng xu. Xem cách tôi làm ở mục dịch vụ, lướt dự án tiêu biểu, hoặc email cho tôi kèm thông tin ai sẽ sửa site và nó cần làm gì — tôi sẽ gợi ý CMS hợp đội bạn, không phải cái tôi tiện tay.

Bài liên quan