זמן החסימה הכולל (TBT)

מהו TBT?

המדד 'זמן חסימה כולל (TBT)' מודד את משך הזמן הכולל לאחר הצגת תוכן ראשוני (FCP) שבו ה-thread הראשי נחסם למשך מספיק זמן כדי למנוע תגובות לקלט.

כברירת מחדל, Lighthouse מפסיק לעקוב אחרי זמן הטעינה של הדף אחרי זמן הטעינה עד לאינטראקטיביות (TTI), כמו גם כמה כלים אחרים של Lab למדידת זמן הטעינה של דף. איך הזמן עד לטעינה קשור לזמן אחזור?

ה-thread הראשי נחשב 'חסום' בכל פעם שיש משימה ארוכה – משימה שפועלת ב-thread הראשי במשך יותר מ-50 אלפיות השנייה. אנחנו אומרים שהשרשור הראשי "חסום" כי הדפדפן לא יכול להפריע למשימה שמתבצעת. לכן, אם משתמש כן יוצר אינטראקציה עם הדף באמצע משימה ארוכה, הדפדפן צריך להמתין לסיום המשימה כדי שיוכל להגיב.

אם המשימה נמשכת מספיק זמן (יותר מ-50 אלפיות שנייה), סביר להניח שהמשתמש יבחין בעיכוב ויראה שהדף איטי או לא תקין.

זמן החסימה של משימה ארוכה מסוימת הוא משך הזמן שלה מעבר ל-50 אלפיות השנייה. זמן החסימה הכולל של דף הוא הסכום של זמן החסימה של כל משימה ארוכה שמתרחשת אחרי הצגת התוכן הראשוני (FCP) במסגרת הזמן שנמדד (בדרך כלל TTI בכלים למדידת זמן הטעינה של דפים, או זמן המעקב הכולל בכלים אחרים).

לדוגמה, התרשים הבא מציג את הליבה הראשית של הדפדפן במהלך טעינת הדף:

ציר זמן של משימות בשרשור הראשי
ציר זמן של משימות ב-thread הראשי.

ציר הזמן שמוצג בתמונה הקודמת מכיל חמש משימות, שלוש מהן הן משימות ארוכות כי משך הזמן שלהן עולה על 50 אלפיות השנייה. בתרשים הבא מוצג זמן החסימה של כל אחת מהמשימות הארוכות:

ציר זמן של משימות בשרשור הראשי שבו מוצג משך החסימה
אותן משימות, עם סימון של זמני החסימה.

לכן, בזמן הכולל של הפעלת המשימות בשרשור הראשי עומד על 560 אלפיות השנייה, רק 345 אלפיות השנייה מתוך הזמן הזה נחשבות לזמן חסימה.

משך המשימה (באלפיות שנייה) זמן החסימה של המשימה (אלפיות שנייה)
משימה אחת 250 200
משימה שנייה 90 40
משימה שלוש 35 0
משימה 4 30 0
משימה חמש 155 105
זמן החסימה הכולל 345 אלפיות שנייה

מה הקשר בין TBT לבין INP?

TBT קדמה ל-INP והיא מועילה כמדד לבעיות ב-INP, במיוחד בסביבת המעבדה שבה קשה יותר למדוד את INP. עם זאת, TBT יכול לסמן בעיות פוטנציאליות שאולי לא יהיו למשתמשים – אם הם לא יתנהלו אינטראקציה באותו זמן. בנוסף, יכול להיות שהבדיקה לא תזהה בעיות שנגרמות כתוצאה מאינטראקציות כשהיא נמדדת בסביבת המעבדה. מומלץ למדוד את INP בשטח כמדד לבעיות תגובה בפועל שהמשתמשים חווים. המדד TBT עשוי לשמש כמדד משוער סביר ל-INP ב-Lab, אבל הוא לא תחליף ל-INP בפני עצמו.

מה הקשר בין TBT ל-TTI?

המדד TBT נמדד לאורך תקופת זמן. בכלים מסוימים של Lab שמודדים באופן מסורתי את טעינות הדפים, כולל Lighthouse, זמן הטעינה המשוער של הדף נמדד עד זמן הטעינה המשוער של תוכן הדף, כי הוא עוזר למדוד את מידת חוסר האינטראקטיביות של דף לפני שהוא הופך לאינטראקטיבי באופן מהימן. עם זאת, אפשר להמשיך למדוד את זמן הטעינה הממוצע גם אחרי טעינת הדף, כלומר מעבר ל-TTI, למשל במצב 'טווח זמן' ב-Lighthouse.

לפי מדד TTI, דף נחשב 'אינטראקטיבי באופן מהימן' אם לא היו בו משימות ארוכות בשרשור הראשי במשך חמש שניות לפחות. כלומר, שלוש משימות של 51 אלפיות השנייה שמפוזרות על פני 10 שניות יכולות לדחות את זמן הטעינה הראשוני באותה מידה כמו משימה אחת באורך 10 שניות – אבל שני התרחישים האלה ייראו שונים מאוד למשתמש שמנסה ליצור אינטראקציה עם הדף.

במקרה הראשון, ל-3 משימות של 51 אלפיות שנייה יהיה TBT של 3 אלפיות שנייה. לעומת זאת, למשימה אחת באורך 10 שניות תהיה TBT של 9,950 אלפיות שנייה. הערך הגבוה יותר של TBT במקרה השני מייצג את חוויית המשתמש הגרועה יותר.

הדוגמה הזו ממחישה למה המדד TBT הוא בדרך כלל מדד טוב יותר מ-TTI, כי הוא פחות נוטה לערכים חריגים. זה נכון גם כשמשתמשים ב-TTI כנקודת הקצה של TBT.

איך מודדים את זמן החשיפה הממוצע

TBT הוא מדד שצריך למדוד במעבדה. הדרך הטובה ביותר למדוד את זמן הטעינה של דף הבית היא להריץ באתר ביקורת ביצועים של Lighthouse. פרטי השימוש מפורטים במסמכי העזרה של Lighthouse בנושא TBT.

אפשר למדוד את זמן הטעינה של הדף בשטח, אבל אנחנו לא ממליצים לעשות זאת כי אינטראקציה של משתמשים יכולה להשפיע על זמן הטעינה של הדף בדרכים שגורמות לתנודות רבות בדוחות. במקום זאת, אם אתם רוצים לבדוק מעבר לאינטראקציה יחידה של INP, מומלץ להשתמש ב-Long Animations Frame API החדש יותר.

כלי Labs

מהו ציון TBT טוב?

כדי לספק חוויית משתמש טובה, מומלץ שהזמן הכולל לחסימה באתרים יהיה פחות מ-200 אלפיות השנייה כשהם נבדקים בחומרה ממוצעת לנייד.

במאמר איך מערכת Lighthouse קובעת את הציון של TBT מוסבר איך זמן הטעינה של הדף משפיע על ציון הביצועים של Lighthouse.

איך לשפר את TBT

באופן כללי, מומלץ לבצע אופטימיזציה לפי INP במקום לפי TBT, כי מומלץ להשתמש ב-TBT כמדד עקיף ל-INP במעבדה (בדרך כלל אי אפשר למדוד את INP בצורה מדויקת). לכן, כדי לשפר את זמן הבידינג הממוצע, כדאי לעיין בהנחיות שלנו בנושא אופטימיזציה של INP.

אם אתם רוצים לבדוק במיוחד את TBT, תוכלו להריץ ביקורת ביצועים של Lighthouse ולשים לב לכל הזדמנות ספציפית שהבדיקה מציעה.

באופן כללי, כדי לשפר את הביצועים של TBT באתר צריך להפחית את מספר הסקריפטים החוסמים. לשם כך, צריך לבצע אופטימיזציה שלהם כדי שהם ימנעו פחות טעינה, או להפחית את מספר הסקריפטים באופן כללי. כדאי לעיין במדריכים הבאים בנושא ביצועים: