תלת-ממד באתר בלי להרוס את המהירות: הפלייבוק שלנו
Draco compression, GLB, טעינה עצלה ו-fallback למובייל, איך מכניסים סצנות WebGL כבדות ושומרים על ציון 90+ ב-Lighthouse. המדריך הטכני לבעלי עסקים ומפתחים.
"הכנסנו מודל תלת-ממד לאתר והוא ירד מ-93 ל-41 ב-Lighthouse", זה המשפט שאנחנו שומעים הכי הרבה כשלקוח מגיע אלינו אחרי ניסיון כושל. תלת-ממד ומהירות אתר לא חייבים להיות מנוגדים. הם עולים על חוט דק, אבל כשמבינים את הכללים, שניהם מנצחים.
הבעיה: למה 3D מאט את האתר
מודל תלת-ממד טיפוסי שיצא מ-Blender או מ-Cinema 4D שוקל בין 30 לכמה מאות מגהבייט. בנוסף, WebGL דורש מה-GPU ומה-CPU לעבוד קשה, מה שמשאיר פחות משאבים לרינדור שאר הדף. על מכשיר מחשב חזק, זה לא מורגש. על אייפון 11 ברשת 4G בפקקים, הדף קופא.
שלב 1: הכנת המודל, עד 90% הקטנה בגודל
GLB + Draco Compression
הפורמט הנכון לווב הוא GLB, אריזה בינארית של GLTF. אבל הקסם האמיתי הוא Draco: אלגוריתם דחיסה של גוגל שמקטין גיאומטריה של מודלים ב-80-95% בלי איבוד איכות נראה לעין. מודל של 40MB הופך ל-3MB. הפקודה שמספיקה ברוב המקרים: `gltf-transform optimize input.glb output.glb --compress draco --texture-compress webp`.
בדיקת Polygon Count
לווב, 50,000-100,000 פוליגונים לסצנה הם הנוחות המקסימלית. מעבר לזה, מאחזה מחלקת. מפלחים מודל כבד ב-Blender עם Decimate modifier: 30-50% הפחתה עם שמירה על מראה.
שלב 2: טעינה עצלה ו-fallback
- Dynamic import: טוענים את הספריית 3D רק כשהמשתמש מגיע לאזור הרלוונטי בדף, לא בטעינה הראשונה
- Intersection Observer: הסצנה מתחילה לטעון כש-50% ממנה בוויופורט
- Suspense + Fallback: בזמן הטעינה מציגים placeholder (אנימציית CSS, תמונה סטטית, spinner ממותג), לא מסך ריק
- Mobile detection: על מסכים מתחת ל-768px אנחנו בדרך כלל מציגים תמונה סטטית מרנדרת של הסצנה. כמעט לא מורגש ולא מאט כלום
גישה טובה יותר מ-fallback למובייל? להריץ את הסצנה ממוטבת למובייל. גישה יותר מעשית? fallback. בחרו לפי חשיבות ה-3D לחוויה.
שלב 3: Spline vs Three.js vs React Three Fiber, מה בחרנו ומתי
Spline: הכי מהיר לעלות לאוויר, הכי פחות שליטה על אופטימיזציה. נהדר לסצנות decorative ולהדגמות. זה מה שאנחנו משתמשים בו עצמנו באתר הזה, הסצנה שאתם רואים היא Spline, ומשולבת עם lazy load שמוריד אותה רק כשמגיעים לאזור הרלוונטי. React Three Fiber: שליטה מלאה, אפשר לאנימציה תלוי-scroll, אינטראקציה מלאה עם המשתמש. הבחירה לאתרי מוצר ו-configurators. Three.js vanilla: למקסימום ביצועים ורינדורים מסוג לוח מחוונים, כשגם כמה KB של JavaScript חשובים.
הציון לאחר האופטימיזציה
עם הפלייבוק הזה, פרויקטי 3D שלנו מגיעים ל-85-95 ב-Lighthouse Performance על דסקטופ, ו-75-88 על מובייל. LCP (Largest Contentful Paint) מתחת ל-2.5 שניות. CLS אפס, הסצנה לא גורמת ל-layout shift כי לה placeholder עם גובה קבוע.
רוצים חוויה תלת-ממדית באתר שלכם שלא תאט אותו? בואו נראה מה מתאים.
לעמוד פיתוח תלת-ממד