פורסם: 7 בנובמבר 2019, עדכון אחרון: 15 באוקטובר 2025
מה זה TBT?
מדד הזמן הכולל לחסימה (TBT) מודד את משך הזמן הכולל אחרי הצגת התוכן הראשוני (FCP) שבו ה-thread הראשי נחסם למשך מספיק זמן כדי למנוע תגובות לקלט.
כברירת מחדל, Lighthouse מפסיק לעקוב אחרי TBT אחרי הזמן עד שהדף הופך לאינטראקטיבי (TTI), כמו גם חלק מכלי המעבדה האחרים שמודדים את טעינת הדף. איך TBT קשור ל-TTI?
ה-thread הראשי נחשב כ'חסום' בכל פעם שיש משימה ארוכה – משימה שפועלת ב-thread הראשי למשך יותר מ-50 אלפיות השנייה. אנחנו אומרים שהשרשור הראשי 'חסום' כי הדפדפן לא יכול להפריע למשימה שנמצאת בתהליך. לכן, אם משתמש מבצע אינטראקציה עם הדף באמצע משימה ארוכה, הדפדפן צריך לחכות עד שהמשימה תסתיים כדי להגיב.
אם המשימה ארוכה מספיק (כל דבר מעל 50 אלפיות שנייה), סביר להניח שהמשתמש יבחין בעיכוב ויתפוס את הדף כאיטי או כפגום.
זמן החסימה של משימה ארוכה מסוימת הוא משך הזמן שלה מעבר ל-50 אלפיות השנייה. זמן החסימה הכולל של דף הוא סכום זמן החסימה של כל משימה ארוכה שמתרחשת אחרי הצגת התוכן הראשוני (FCP) במהלך מסגרת הזמן שנמדדת (בדרך כלל זמן האינטראקטיביות (TTI) בכלי טעינת דפים, או זמן המעקב הכולל בכלי ניתוח אחרים).
לדוגמה, התרשים הבא מציג את ה-thread הראשי של הדפדפן במהלך טעינת הדף:
ציר הזמן שמוצג בתמונה הקודמת כולל חמש משימות, שלוש מהן הן משימות ארוכות כי משך הזמן שלהן ארוך מ-50 אלפיות השנייה. בדיאגרמה הבאה מוצג זמן החסימה של כל אחת מהמשימות הארוכות:
לכן, למרות שהזמן הכולל שנדרש להפעלת משימות ב-thread הראשי הוא 560 מילישניות, רק 345 מילישניות מתוכן נחשבות לזמן חסימה.
משך המשימה (באלפיות השנייה) | זמן החסימה של המשימה (באלפיות השנייה) | |
---|---|---|
משימה ראשונה | 250 | 200 |
משימה שנייה | 90 | 40 |
משימה 3 | 35 | 0 |
משימה 4 | 30 | 0 |
משימה חמש | 155 | 105 |
זמן החסימה הכולל | 345 מילישניות |
מה הקשר בין TBT לבין INP?
המדד TBT קדם למדד INP, והוא שימושי כאינדיקטור לבעיות שקשורות למדד INP, במיוחד בסביבת המעבדה שבה קשה יותר למדוד את מדד INP. עם זאת, TBT יכול לסמן בעיות פוטנציאליות שלא משפיעות על המשתמשים – אם הם לא מבצעים אינטראקציה באותו זמן. בנוסף, יכול להיות שהכלי לא יזהה בעיות שנובעות מאינטראקציות כשמבצעים מדידה בסביבת מעבדה. מומלץ למדוד את מדד INP בשטח כדי לקבל מדד של בעיות תגובה בפועל כפי שהן נחווות על ידי המשתמשים. יכול להיות ש-TBT הוא מדד סביר לקירוב של INP במעבדה, אבל הוא לא תחליף ל-INP בפני עצמו.
מה הקשר בין TBT לבין TTI?
ה-TBT נמדד לאורך תקופת זמן. בכמה כלים מעבדתיים שמודדים בדרך כלל טעינות של דפים, כולל Lighthouse, נמדד TBT עד TTI כי הוא עוזר לכמת את חומרת חוסר האינטראקטיביות של דף לפני שהוא הופך לאינטראקטיבי באופן מהימן. עם זאת, אפשר להמשיך למדוד את TBT גם אחרי טעינת הדף, כלומר אחרי TTI, למשל במצב Timespan ב-Lighthouse.
דף נחשב ל'אינטראקטיבי באופן מהימן' אם ה-thread הראשי היה פנוי ממשימות ארוכות במשך חמש שניות לפחות. כלומר, שלוש משימות של 51 אלפיות השנייה שמתפרסות על פני 10 שניות יכולות לדחות את הזמן לאינטראקטיביות בדיוק כמו משימה אחת באורך 10 שניות – אבל שני התרחישים האלה ייראו שונים מאוד למשתמש שמנסה ליצור אינטראקציה עם הדף.
במקרה הראשון, שלוש משימות של 51 אלפיות השנייה יניבו TBT של 3 אלפיות השנייה. לעומת זאת, למשימה אחת שאורכה 10 שניות יהיה TBT של 9,950 אלפיות שנייה. הערך הגבוה יותר של TBT במקרה השני מצביע על חוויה גרועה יותר.
בדוגמה הזו אפשר לראות למה מדד TBT הוא לרוב מדד טוב יותר ממדד TTI, כי הוא פחות מוטה לערכים חריגים. זה נכון גם כשמשתמשים ב-TTI כנקודת הקצה של TBT.
איך מודדים TBT
TBT הוא מדד שצריך למדוד במעבדה. הדרך הכי טובה למדוד את הזמן הכולל לחסימת פעולות (TBT) היא להריץ באתר ביקורת ביצועים באמצעות Lighthouse. פרטים על השימוש מופיעים במאמרי העזרה של Lighthouse בנושא TBT.
אפשר למדוד את TBT בשטח, אבל אנחנו לא ממליצים על כך כי אינטראקציה של משתמשים יכולה להשפיע על TBT של הדף בדרכים שמובילות להבדלים גדולים בדוחות. במקום זאת, אם רוצים לבדוק מעבר לאינטראקציה אחת של INP, מומלץ לעיין ב-Long Animations Frame API החדש יותר בשטח.
כלי מעבדה
מהו ציון TBT טוב?
כדי לספק חוויית משתמש טובה, אתרים צריכים לשאוף לזמן חסימה כולל של פחות מ-200 מילישניות כשבודקים אותם בחומרה ממוצעת לניידים.
לפרטים על ההשפעה של TBT של הדף על ציון הביצועים ב-Lighthouse, אפשר לעיין במאמר איך Lighthouse קובע את ציון ה-TBT
איך לשפר את TBT
באופן כללי, מומלץ לבצע אופטימיזציה ל-INP במקום ל-TBT, כי מומלץ להשתמש ב-TBT כמדד proxy ל-INP במעבדה (שבה בדרך כלל אי אפשר למדוד את ה-INP בצורה מדויקת). לכן, כדי לשפר את TBT, כדאי לעיין בהנחיות שלנו בנושא אופטימיזציה של INP.
אם אתם רוצים לבדוק את TBT באופן ספציפי, אתם יכולים להריץ ביקורת ביצועים ב-Lighthouse ולשים לב להזדמנויות ספציפיות שהביקורת מציעה.
באופן כללי, שיפור ה-TBT באתר כולל הפחתה של מספר הסקריפטים שחוסמים את הטעינה. כלומר, צריך לבצע אופטימיזציה של הסקריפטים כדי שהם יחסמו פחות את הטעינה, או להפחית את מספר הסקריפטים הכולל. כדאי לעיין במדריכי הביצועים הבאים: