פורטל רב-לשוני עם עשרות אלפי רשומות מעמיס על CMS מונוליטי. הגישה ה-headless משחררת אתכם: תוכן בנפרד, frontend בנפרד. Contentful היא אחת מפלטפורמות ה-headless CMS הראשונות והבוגרות ביותר, המיועדת למשימות ארגוניות. הצוות שלנו משתמש בה בפרויקטים עם דרישות ביצועים גבוהות: ניסיון של 10+ שנים, 50+ פרויקטים מוצלחים על ארכיטקטורת headless. פיתוח אתר headless על Contentful משיג TTFB מתחת ל-100 אלפיות השנייה הודות ל-CDN הגלובלי המובנה ולמודל התוכן הגמיש.
לפי Contentful, ה-CDN המובנה מפחית את זמן הטעינה עד פי 3 בהשוואה לפתרונות ללא CDN.
מה Contentful מספקת לפרויקטים ארגוניים
היתרון המרכזי הוא CDN גלובלי בכל הרמות. Contentful שומרת תגובות API בשרתי קצה, כך ש-TTFB של המשתמש הסופי הוא מינימלי. במדידות שלנו, זה מהיר עד פי 3 ממתחרים כמו Sanity, שאין להם CDN מובנה. יתרון שני הוא מודל התוכן הגמיש: סוגי תוכן, שדות הפניה, מדיה, לוקליזציה — הכל ניתן להגדרה דרך GUI או API. התוכנית החינמית כוללת עד 25,000 רשומות ו-2 שפות, מספיק לפרויקטים קטנים. המעבר לארכיטקטורת headless מפחית עלויות תשתית בעד 40%.
בעיות אופייניות שאנחנו פותרים
- טעינת עמודים איטית עקב מנועי CMS כבדים. Contentful מספקת רק נתונים; ה-markup נוצר ב-frontend (SSR/SSG/ISR).
- מורכבות בסנכרון טיוטות. אנחנו משתמשים ב-Preview API וב-webhooks לרגנרציה מצטברת.
- כפילות תוכן בין סביבות. Contentful מספקת סביבות מלאות (פיתוח, staging, master).
איך אנחנו משלבים את Contentful עם Next.js?
המחסנית האופיינית: Next.js 14 (App Router) + TypeScript + Tailwind CSS. התוכן נטען דרך ה-SDK, ומוצג כ-React Server Components ישירות בשרת. זה נותן אפס JavaScript בצד הלקוח לתוכן סטטי.
// lib/contentful.ts
import { createClient, type EntryFieldTypes } from 'contentful'
export const client = createClient({
space: process.env.CONTENTFUL_SPACE_ID!,
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
environment: 'master',
})
export const previewClient = createClient({
space: process.env.CONTENTFUL_SPACE_ID!,
accessToken: process.env.CONTENTFUL_PREVIEW_TOKEN!,
host: 'preview.contentful.com',
})עבור כל סוג תוכן, אנחנו יוצרים שלד TypeScript. זה נוח: ה-IDE מציע שדות, ומפחית שגיאות במהלך רפקטורינג.
למה לבחור ב-Contentful ל-Next.js?
Next.js משתלבת בצורה מושלמת עם Contentful: ISR מאפשר עדכון עמודים לאחר פרסום רשומה ללא בנייה מלאה מחדש. Webhook מ-Contentful מפעיל revalidation — העמוד מתחדש תוך כדי תנועה.
// app/api/revalidate/contentful/route.ts
import { revalidateTag } from 'next/cache'
export async function POST(req: Request) {
const secret = req.headers.get('x-contentful-webhook-secret')
if (secret !== process.env.CONTENTFUL_WEBHOOK_SECRET) {
return Response.json({ error: 'Unauthorized' }, { status: 401 })
}
revalidateTag('contentful')
return Response.json({ revalidated: true })
} איך אנחנו מגדירים רגנרציה סטטית מצטברת (ISR)?
הפרויקט צריך רק webhook אחד לכל סוגי התוכן. כאשר רשומה מתפרסמת, Contentful שולחת POST אל // lib/contentful.ts import { createClient, type EntryFieldTypes } from 'contentful' export const client = createClient({ space: process.env.CONTENTFUL_SPACE_ID!, accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!, environment: 'master', }) export const previewClient = createClient({ space: process.env.CONTENTFUL_SPACE_ID!, accessToken: process.env.CONTENTFUL_PREVIEW_TOKEN!, host: 'preview.contentful.com', }) . אנחנו קוראים ל-// app/api/revalidate/contentful/route.ts import { revalidateTag } from 'next/cache' export async function POST(req: Request) { const secret = req.headers.get('x-contentful-webhook-secret') if (secret !== process.env.CONTENTFUL_WEBHOOK_SECRET) { return Response.json({ error: 'Unauthorized' }, { status: 401 }) } revalidateTag('contentful') return Response.json({ revalidated: true }) } — כל העמודים שמתויגים בתג זה מתעדכנים בבקשה הבאה. זה יעיל יותר מבנייה מחדש של כל האתר.
הערה: Contentful מציעה תוכנית חינמית (25,000 רשומות, 2 שפות) ותוכניות בתשלום, כשהעלות תלויה בנפח התוכן ובתכונות הנדרשות. החיסכון באירוח יכול להגיע ל-30%.
השוואה בין Contentful ל-Sanity
| קריטריון | Contentful | Sanity |
|---|---|---|
| סוג אירוח | SaaS, ענן | SaaS/אירוח עצמי |
| CDN מובנה | כן (גלובלי) | לא (דורש הגדרה) |
| GraphQL API | כן (מובנה) | כן (דרך Groq) |
| שפות SDK | JS, Python, Ruby, PHP | JS, TS, Python |
| תוכנית חינמית | 25,000 רשומות, 2 שפות | 5,000 רשומות, שפה אחת |
GraphQL מול REST: השוואת גישות
| קריטריון | REST API | GraphQL API |
|---|---|---|
| בחירת שדות | רק רשומה מלאה | רק שדות נדרשים |
| קשרים מקוננים | דרך include | ישירות בשאילתה |
| שמירה במטמון | CDN מובנה | דורש הגדרת כותרות מטמון |
| כלים | curl, Postman | Apollo, GraphiQL |
עבור עמודים פשוטים, REST מספיק. עבור לוחות מחוונים מורכבים עם נתונים מקוננים (למשל, מאמר עם מחבר, תגיות, תגובות), GraphQL יעיל יותר — בקשה אחת במקום כמה.
query GetPost($slug: String) {
blogPostCollection(where: { slug: $slug }, limit: 1) {
items {
title
content
author {
name
}
tags
}
}
} סקירת תהליך
- ביקורת מודל תוכן — ניתוח המבנה הקיים, אופטימיזציה של סוגים והפניות.
- עיצוב — יצירת סוגי תוכן, הגדרת לוקליזציה, סביבות והרשאות.
- יישום — אינטגרציית SDK, פיתוח frontend, הגדרת Preview Mode ו-webhooks.
- בדיקות — בדיקות ביצועים (Core Web Vitals), בדיקות רגרסיה.
- פריסה — פריסה לאירוח נבחר (Vercel, Netlify, שרת עצמי).
היקף העבודה
- עיצוב מודל התוכן ותיעוד הסכמה.
- אינטגרציית Contentful SDK עם ה-frontend שלכם.
- הגדרת Preview Mode לנוחות העורכים.
- Webhooks ו-ISR לעדכוני עמודים מיידיים.
- הוראות שימוש בלוח הניהול והדרכת צוות.
- אחריות תמיכה ל-30 יום לאחר המסירה.
לוחות זמנים משוערים
אתר בסיסי עם 3–5 סוגי תוכן לוקח 1.5–2 שבועות. פרויקט רב-לשוני מורכב עם GraphQL והרשאות מותאמות אישית לוקח 3–4 שבועות. התמחור נקבע באופן אישי לאחר ביקורת. צרו קשר לייעוץ — נבחן את הפרויקט שלכם ונציע את הפתרון האופטימלי. הזמינו פיתוח אתר headless על Contentful וקבלו את העמוד הראשון תוך שבועיים.
קישורים שימושיים:







