⚡ מה זה Core Web Vitals ולמה זה לא רק עוד מטריקה
תקשיבו טוב. ב 2020 גוגל הכריזה ש מהירות וחווית משתמש יהיו גורם דירוג. ב 2021 זה הופך לרשמי, Core Web Vitals (CWV). היום, ב 2026, אתר עם CWV אדום פשוט לא תחרותי. נקודה.
Core Web Vitals זה 3 מטריקות שגוגל משתמש למדידת חווית משתמש בעמוד שלכם. הן מודדות, כמה מהר התוכן נטען, כמה האתר מגיב לקליקים, וכמה הוא יציב ויזואלית.
3 המטריקות
LCP (Largest Contentful Paint)
זמן עד שהאלמנט הגדול ביותר בעמוד נטען. בדרך כלל תמונת hero או H1. מדד טוב, פחות מ 2.5 שניות.
CLS (Cumulative Layout Shift)
כמה הלייאאוט קופץ ומשתנה אחרי שהעמוד נטען. מטריקה ל יציבות. מדד טוב, פחות מ 0.1.
INP (Interaction to Next Paint)
תגובתיות לקליקים. כמה זמן עובר מהקליק עד שהדפדפן מגיב. החליף את FID ב מרץ 2024. מדד טוב, פחות מ 200ms.
הצבעים
| מטריקה | טוב | צריך שיפור | גרוע |
|---|---|---|---|
| LCP | ≤ 2.5s | 2.5s - 4.0s | > 4.0s |
| INP | ≤ 200ms | 200ms - 500ms | > 500ms |
| CLS | ≤ 0.1 | 0.1 - 0.25 | > 0.25 |
CWV לא רק על דירוג. גוגל מצא שאתרים עם CWV טובים מקבלים 30%+ פחות bounces, 20%+ יותר המרות, ועוד. גם אם CWV לא משפיע ישירות על דירוג, התוצאות העקיפות הן כאות חיובי.
📏 LCP, הזמן עד שרואים את התוכן
LCP (Largest Contentful Paint) זה הזמן מ הקליק על הקישור עד שהאלמנט הגדול ביותר ב viewport נטען. זה הסימן ל משתמש שהעמוד מוכן.
מה זה האלמנט הגדול ביותר
- תמונת hero גדולה
- וידאו thumbnail
- בלוק טקסט גדול (H1 + paragraph)
- background image עם תוכן עליה
מה משפיע על LCP
זמן תגובת שרת (TTFB)
השרת לוקח X שניות להחזיר את ה HTML. אם TTFB 800ms, LCP לא יכול להיות מתחת ל 1s.
זמן טעינת CSS
הדפדפן מחכה ל CSS לפני שמציג תוכן. CSS גדול וכבד = LCP גרוע.
זמן טעינת תמונות
תמונת hero של 3MB בלי אופטימליות = LCP גרוע.
JavaScript חוסם
scripts ש blocking ב head מעכבים rendering.
גורמי third-party
ads, analytics, chat widgets מאטים.
איך לתקן LCP
- אחסון מהיר (TTFB < 200ms)
- CDN פעיל
- אופטימיזציית תמונות (WebP, גודל מתאים)
- preload של hero image,
<link rel="preload" as="image" href="..."> - Critical CSS inline, שאר ה CSS נטען async
- הסרת JavaScript מיותר
- defer/async של scripts לא קריטיים
אם LCP שלכם אדום, 90% מהמקרים זה תמונת hero לא אופטימלית. אופטימיזציה של תמונת hero בלבד מורידה את LCP מ 5s ל 2s ב הרבה אתרים. תתחילו שם.
📐 CLS, היציבות שעוצרת את התסכול
CLS (Cumulative Layout Shift) זה מטריקה ל יציבות הויזואלית. כמה הלייאאוט "קופץ" אחרי שהעמוד נטען. אם אתם ניסיתם לקרוא טקסט ופתאום פרסומת נטענה והדחיקה את כל מה שראיתם, זה CLS גרוע.
הסיבות הנפוצות ל CLS גרוע
- תמונות בלי width/height attributes
- פרסומות שנטענות מאוחר ודוחקות תוכן
- iframes שנטענים מאוחר
- גופנים שמחליפים גופן ברירת מחדל (FOUT/FOIT)
- תוכן שנוסף דינמית בלי שטח שמור
- animations שמשנות layout
איך לתקן CLS
תמונות עם width ו height
תמיד. בכל תמונה. הדפדפן שומר את השטח לפני שהתמונה נטענת.
גופנים עם font-display: swap
הדפדפן משתמש בגופן ברירת מחדל עד שהמותאם נטען. אבל וודאו שהגודל דומה.
שטח שמור לפרסומות
הגדירו min-height ל container של פרסומת לפני שהיא נטענת.
iframe עם dimensions
height ו width מוגדרים ל iframe.
אל תוסיפו תוכן מעל תוכן קיים
banners ו pop-ups שמופיעים מלמעלה דוחקים תוכן. תנו להם overlay, לא layout shift.
animations עם transform/opacity בלבד
אלה לא משנות layout. הימנעו מ animations שמשנות width/height/top/left.
CLS Hidden Issues
לעיתים CLS מופיע רק במצבים ספציפיים, גלילה, פולטר שפה, פתיחת אקורדיון. בדקו את האתר באופן אינטראקטיבי, לא רק טעינה ראשונית.
⚡ INP, התגובתיות שמחליפה את FID
במרץ 2024 גוגל החליפה את FID (First Input Delay) ב INP (Interaction to Next Paint). זה היה שינוי גדול ש שבר את ה CWV של הרבה אתרים.
ההבדל בין FID ל INP
- FID, רק האינטרקציה הראשונה. רק זמן עד שה JavaScript מתחיל. לא כללית את כל הזמן עד שראינו תוצאה.
- INP, כל האינטרקציות. הזמן הארוך ביותר. כולל את כל הזמן עד שראינו את התוצאה הויזואלית.
למה INP יותר קשה
INP מודד עד paint. זה אומר, אם אתם מקליקים על כפתור, ולוקח 500ms עד ש הדפדפן מציג שינוי, INP הוא 500ms. גם אם ה JavaScript הגיב מהר.
הסיבות ל INP גרוע
- JavaScript ארוך, פונקציה שלוקחת 300ms חוסמת את הדפדפן
- Event handlers כבדים, click listener שעושה הרבה עבודה
- DOM גדול, dezenes של אלמנטים שמתעדכנים
- third-party scripts, analytics ו ads מאטים
- React/Vue updates כבדים, רנדור מחדש של חלקים גדולים מה DOM
איך לתקן INP
חלקו פונקציות ארוכות
פונקציה של 200ms תחלקו ל 4 פונקציות של 50ms. השתמשו ב setTimeout או requestIdleCallback.
השתמשו ב Web Workers
למשימות כבדות. ה main thread נשאר חופשי.
Lazy Hydration
ב React/Next.js, hydrate חלקים של העמוד רק כשמגיעים אליהם.
אופטימליות של event handlers
debounce ו throttle על input, scroll, resize.
Defer של scripts לא קריטיים
analytics, chat, ads טעונים אחרי שהעמוד אינטראקטיבי.
INP גרוע יופיע בעיקר על מובייל. למה? כי המכשירים פחות חזקים, ה JavaScript לוקח יותר זמן. תבדקו ב מובייל אמיתי, לא רק ב DevTools.
🛠 כלי מדידה, PSI Lighthouse CrUX WebPageTest
איך מודדים CWV? יש 4 כלים עיקריים, וכל אחד עם מטרה שונה.
| כלי | סוג נתונים | מתי להשתמש |
|---|---|---|
| PageSpeed Insights | גם Lab גם Field | בדיקה מהירה, מהיר |
| Lighthouse | Lab (סינתטי) | דיבוג מקומי, ב DevTools |
| CrUX | Field (אמיתי) | נתונים אגרגטיים על כל האתר |
| WebPageTest | Lab מתקדם | ניתוח מעמיק, waterfall |
| Search Console > CWV | Field | נתונים על האתר שלכם, לאורך זמן |
Lab vs Field, ההבדל הקריטי
- Lab data, מדידה סינתטית. הכלי מריץ את העמוד בסביבת בדיקה מבוקרת. עקבי, אבל לא משקף את החוויה האמיתית.
- Field data, מ משתמשים אמיתיים. אגרגטיב נתונים מ Chrome. משקף חוויה אמיתית, אבל פחות עקבי.
איזה כלי מתי
- פיתוח/דיבוג, Lighthouse ב DevTools, מהיר, עם המלצות
- בדיקה כללית, PageSpeed Insights, מהיר, נתונים מ Field
- ניתוח מעמיק, WebPageTest, waterfall מפורט, מספר locations
- מעקב לאורך זמן, Search Console > CWV, מציג גם prerelease של בעיות עתידיות
- נתונים אמיתיים אגרגטיביים, CrUX dashboard, נתונים מ Chrome גלובלית
גוגל ב דירוג משתמש ב Field data מ CrUX, לא Lab. אז גם אם PSI Lab מראה 90 ירוק, אם CrUX מראה אדום, לגוגל אתם אדום. תמיד מסתכלים על Field לפני הכל.
🖼 אופטימיזציית תמונות, ההשפעה הכי גדולה על LCP
תמונות הן 50%+ מהמשקל של עמוד ממוצע. ולעיתים האלמנט שאחראי ל LCP. אם תאופטימזו תמונות, אתם בדרך כלל פותרים את רוב הבעיות.
הצעדים
פורמט WebP או AVIF
חוסך 30-50% משקל לעומת JPG/PNG. כל הדפדפנים המודרניים תומכים.
גודל מתאים
אל תעלו 4000px כשמציגים ב 800px. השתמשו ב srcset לגדלים שונים.
Lazy loading
תמונות מתחת ל fold נטענות רק כשמגיעים אליהן. native,
loading="lazy".Hero image עם preload
תמונת hero עם
<link rel="preload" as="image">. עוזר ל LCP.width ו height attributes
בכל תמונה. ל CLS.
aspect-ratio ב CSS
שטח שמור לפני שהתמונה נטענת.
CDN לתמונות
Cloudinary, Imgix, או Cloudflare Images. אופטימיזציה אוטומטית.
responsive images
<img
src="image-800.webp"
srcset="image-400.webp 400w,
image-800.webp 800w,
image-1200.webp 1200w"
sizes="(max-width: 768px) 100vw, 800px"
width="800" height="600"
loading="lazy"
alt="..."
/>
📜 JavaScript Optimization, ה INP killer
JavaScript הוא הסיבה העיקרית ל INP גרוע. כל script שאתם מוסיפים = עוד זמן ה main thread עסוק = עוד זמן עד שהדפדפן מגיב.
הצעדים
Code splitting
אל תטענו את כל ה JavaScript בעמוד הבית. ב webpack/Next.js, dynamic imports.
Tree shaking
הסרת קוד שלא בשימוש. הכלים המודרניים עושים אוטומטית.
Defer scripts
scripts שלא קריטיים עם
deferattribute. נטענים אחרי DOM.Async scripts
scripts בלתי-תלויים (analytics) עם
async.Lazy loading של components
ב React,
React.lazy(). ב Vue, async components.Web Workers
למשימות כבדות. ה main thread נשאר חופשי לאינטרקציות.
Hydration אופטימלית
ב SSR, partial hydration או progressive hydration.
הגדולים שמאטים
- jQuery (אם לא חיוני)
- Bootstrap JS (אם משתמשים רק במעט קומפוננטים)
- Page builders כבדים (Divi, Elementor עם הרבה widgets)
- Analytics ו tag managers
- Chat widgets
- Social media embeds
- Heatmap tools (Hotjar, Clarity)
כל script של ספק חיצוני הוא סיכון. אנליטיקס, אדס, chat. בדקו, האם זה באמת קריטי? אם כן, האם אפשר ל לטעון אחרי שהעמוד אינטראקטיבי?
🎨 CSS Optimization, ה Critical Render Path
CSS חוסם rendering. הדפדפן מחכה ל CSS לפני שמציג תוכן. CSS גדול = LCP גרוע.
הצעדים
Critical CSS inline
ה CSS הדרוש לתצוגה הראשונית, inline ב
<style>. שאר ה CSS נטען async.Minify CSS
הסרת רווחים, comments. כלים, cssnano, csso.
Remove unused CSS
PurgeCSS מסיר CSS שלא בשימוש. חוסך 50%+ ב הרבה אתרים.
הפרידו ל files לפי דרישה
CSS ל עמוד הבית, ל קטגוריות, ל מוצרים. לא הכל ב file אחד גדול.
אל תשתמשו ב @import
חוסם rendering. השתמשו ב <link> tags.
defer של CSS לא קריטי
טכניקת media swap,
<link rel="preload" href="..." as="style" onload="this.rel='stylesheet'">.
CSS Frameworks, הבעיה
Tailwind, Bootstrap, Materialize, כולם גדולים. עם PurgeCSS (Tailwind מובנה), אפשר להוריד מ 1MB ל 30KB.
🔤 Font Loading Strategy, להציל את ה LCP וה CLS
גופנים יכולים להרוס גם LCP וגם CLS. אם הגופן לא נטען, ה דפדפן מחכה (FOIT) או מציג גופן ברירת מחדל ואז מחליף (FOUT). שני המצבים גרועים.
הפתרון, font-display: swap
@font-face {
font-family: 'MyFont';
src: url('myfont.woff2') format('woff2');
font-display: swap;
}
הדפדפן מציג גופן ברירת מחדל מיד, מחליף לגופן המותאם כשנטען. בלי לחסום rendering.
איך למנוע CLS מגופנים
- השתמשו בגופן ברירת מחדל דומה בגודל וב metrics לגופן המותאם
- השתמשו ב
font-size-adjustוsize-adjustב @font-face - השתמשו ב Adobe Fonts או Google Fonts עם font-display: swap מובנה
- preload לגופנים קריטיים,
<link rel="preload" as="font"> - הפחיתו מספר variants (אם אתם משתמשים רק ב regular ו bold, אל תטענו את כל ה weights)
גופנים ב עברית
גופנים בעברית כבדים יותר (יותר תווים). השתמשו ב subsetting להוריד תווים שלא בשימוש. Heebo, Assistant, Open Sans Hebrew הם אופציות טובות.
🖥 TTFB, הגדרות שרת ו CDN
TTFB (Time To First Byte) הוא הזמן עד שהשרת מתחיל לשלוח את ה HTML. אם TTFB 800ms, LCP לא יכול להיות מתחת ל 1s. נקודה. אז שיהיה לכם TTFB טוב.
מה משפיע על TTFB
- איכות האחסון, shared hosting זול = TTFB גרוע
- מיקום השרת, שרת בארה"ב + גולש בישראל = 100-200ms latency
- שאלות database, שאילתות איטיות
- cache, אם אין cache, ה PHP נע על כל בקשה
- CDN, אם אין, כל בקשה ל שרת המקור
- SSL, handshake נוסף, 50-100ms
איך לשפר TTFB
אחסון איכותי
VPS או Managed WordPress. הימנעו מ shared hosting זול.
שרת קרוב לקהל היעד
אם הקהל בישראל, שרת באירופה לא בארה"ב.
Cache plugin
WP Rocket, W3 Total Cache. שומר HTML מוכן.
CDN, Cloudflare
חינמי. מציג HTML שמור מ נקודה קרובה למשתמש. חוסך 100-300ms.
HTTP/2 או HTTP/3
פרוטוקול מהיר יותר. רוב האחסונים תומכים.
אופטימליות database
indexes, queries מהירות, ניקוי DB.
פתחו DevTools > Network. רענן את העמוד. הסתכלו על השורה הראשונה (HTML document). זמן ה "Waiting (TTFB)". אם זה מעל 200ms, יש לכם מה לתקן בשרת. אם זה מתחת ל 100ms, מצוין.
📊 Real User Monitoring (RUM)
Lab tools נותנים תמונה אחת. RUM (Real User Monitoring) נותן את האמת מ משתמשים אמיתיים.
למה RUM חשוב
- הקהל שלכם משתמש במכשירים שונים, רשתות שונות, מיקומים שונים
- Lab tools רצים על מכשיר אחד, רשת אחת, מיקום אחד
- RUM אוסף נתונים מ כל הגולשים שלכם, אגרגציה ל אחוזון 75
- גוגל משתמש ב RUM ב CrUX, ככה הוא מודד את CWV
כלים
| כלי | חינמי | פיצ'רים |
|---|---|---|
| Google Analytics 4 | חינמי | events של CWV, נתונים בסיסיים |
| CrUX dashboard | חינמי | נתונים אגרגטיביים מ Chrome |
| SpeedCurve | בתשלום | RUM מקצועי |
| Akamai mPulse | בתשלום | RUM ל enterprise |
| Datadog RUM | בתשלום | בעיקר ל DevOps |
web-vitals JavaScript library
Google מספקת library חינמית שמודדת CWV ב browser המשתמש. אפשר לשלוח את הנתונים ל GA4 או לכלי אחר.
import {onLCP, onINP, onCLS} from 'web-vitals';
onLCP(console.log);
onINP(console.log);
onCLS(console.log);
💼 איך לדבר עם המפתח שלכם על CWV
אתם מקדם SEO. המפתח של הלקוח לא רוצה לשמוע "האתר איטי". צריך לדבר אחרת.
הצעדים
נתוני אמת
השתמשו ב PSI עם Field data. הראו את הציון. הראו את ה specific metric שלא טוב.
השפעה עסקית
"LCP של 5s = bounce rate עולה ב 30%". המפתח מבין מספרים עסקיים.
בקשה ספציפית
לא "תאיץ את האתר". "תאופטמז את תמונת ה hero, היא 3MB". פעולה קונקרטית.
תיעדוף
תנו לו רשימה מסודרת לפי impact. תמונות > CSS > JS > שרת.
מדידה אחרי
אחרי שינויים, מודדים שוב. הראיתם תוצאות, יש motivation להמשיך.
טבלת תיעדוף
| בעיה | כמה זמן לתקן | השפעה |
|---|---|---|
| תמונה לא אופטימלית | 1-2 שעות | גדולה |
| הוספת CDN | 2-4 שעות | גדולה |
| Cache plugin | 1-2 שעות | גדולה |
| Critical CSS | 4-8 שעות | בינונית |
| Defer JavaScript | 2-4 שעות | בינונית |
| Image dimensions | 1-2 שעות | בינונית (CLS) |
| הסרת plugins מיותרים | 2-4 שעות | גדולה |
| שדרוג אחסון | 4-8 שעות | גדולה |
🎯 Budget per page type, התקציב לכל סוג עמוד
לא כל עמוד צריך להיות באותה ביצועים. אבל לכל עמוד צריך budget. הנה ה standards שלי.
| סוג עמוד | LCP target | JS size | תמונות |
|---|---|---|---|
| עמוד הבית | < 2.0s | < 150KB | hero אחד מאופטמז |
| קטגוריה | < 2.5s | < 200KB | thumbnails lazy |
| מוצר | < 2.0s | < 200KB | hero + 5 thumbnails |
| מאמר בלוג | < 2.0s | < 100KB | featured + inline |
| landing page | < 1.5s | < 100KB | hero מאופטמז במיוחד |
| checkout | < 1.8s | < 250KB | מינימליסטי |
איך לאכוף budget
- הגדירו את ה standards לפני שמתחילים פיתוח
- הריצו Lighthouse ב CI/CD, חסום deploys אם budget נחרג
- השתמשו ב BundleAnalyzer ב webpack לראות מה גודל
- מעקב חודשי, באתר חי, האם הציונים יורדים?
✅ צ'ק ליסט CWV מקיף
תקשיבו. אם רוצים להתחיל מחר ולתקן את ה CWV של האתר, הנה הרשימה. אחת אחת.
אבחון
- הריצו PageSpeed Insights על 5-10 עמודים מרכזיים
- רישמו את LCP, INP, CLS לכל אחד
- סמנו אילו בירוק, צריך שיפור, אדום
- בדקו ב Search Console > Core Web Vitals report
- זהו את הבעיות הגדולות (תמונות? JS? שרת?)
LCP
- אחסון מהיר (TTFB < 200ms)
- CDN פעיל (Cloudflare)
- תמונת hero אופטימלית (WebP, גודל מתאים)
- Preload של hero image
- Critical CSS inline
- הסרת JavaScript חוסם ב head
CLS
- תמונות עם width ו height
- גופנים עם font-display: swap
- שטח שמור לפרסומות
- iframes עם dimensions
- אין תוכן שמופיע מעל תוכן קיים
INP
- חלוקת פונקציות ארוכות
- Web Workers למשימות כבדות
- Defer scripts לא קריטיים
- debounce/throttle על event handlers
- Lazy loading של components
שרת ו CDN
- אחסון איכותי (לא shared hosting זול)
- Cache plugin פעיל
- CDN מוגדר נכון
- HTTP/2 או HTTP/3
- HTTPS עם handshake מהיר (OCSP stapling)
תחזוקה שוטפת
- בדיקה חודשית של CWV ב Search Console
- בדיקה אחרי כל deploy גדול
- מעקב ב GA4 על CWV events
- תיקון בעיות תוך 30 יום
📖 מילון מושגים
- Core Web Vitals
- 3 מטריקות של גוגל למדידת UX באתר
- LCP
- Largest Contentful Paint, זמן עד שהאלמנט הגדול ביותר נטען
- CLS
- Cumulative Layout Shift, יציבות ויזואלית של הלייאאוט
- INP
- Interaction to Next Paint, תגובתיות לאינטרקציות, החליף את FID ב 2024
- FID
- First Input Delay, המטריקה הישנה שהוחלפה ב INP
- TTFB
- Time To First Byte, זמן עד שהשרת מתחיל להגיב
- CrUX
- Chrome User Experience Report, נתוני CWV מ משתמשים אמיתיים
- RUM
- Real User Monitoring, מדידת ביצועים אצל משתמשים אמיתיים
- Lab Data
- מדידות סינתטיות מכלי בדיקה
- Field Data
- מדידות אמיתיות מ משתמשים
- Critical CSS
- ה CSS הדרוש לתצוגה הראשונית של העמוד
- Web Workers
- API שמאפשר להריץ JavaScript ב thread נפרד