מאינטראקציה ועד הצגת התגובה (INP)

תמיכה בדפדפן

  • 96
  • 96
  • x
  • x

מקור

נתוני השימוש ב-Chrome מראים ש-90% מזמן הביקור של משתמש בדף הוא אחרי שהוא נטען. לכן, חשוב למדוד בצורה זהירה את מהירות התגובה לאורך כל מחזור החיים של הדף. כך אנחנו מחשבים את המדד INP.

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

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

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

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

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

במאמר הזה נסביר איך INP עובד, איך למדוד אותו ונפנה למקורות מידע שיעזרו לכם לשפר אותו.

מה זה INP?

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

הערה לגבי אופן החישוב של INP

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

אינטראקציה היא קבוצה של גורמים מטפלים באירועים שמופעלים במהלך אותה תנועה לוגית של משתמש. לדוגמה, אינטראקציות שמקישים על 'הקשה' במכשיר עם מסך מגע כוללות כמה אירועים, כמו pointerup, pointerdown ו-click. אינטראקציה יכולה להיות מבוססת על JavaScript, CSS, פקדי דפדפן מובנים (כמו רכיבי טופס) או שילוב של השניים.

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

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

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

כדי לוודא שאתם מספקים חוויות משתמש עם יכולת תגובה טובה, סף טוב למדידה הוא האחוזון ה-75 של טעינות דפים שתועדו בשדה, בפילוח לפי מכשירים ניידים ומחשבים:

  • ערך INP מתחת או 200 אלפיות השנייה פירושו שלדף יש מהירות תגובה טובה.
  • ערך INP שגבוה מ-200 אלפיות השנייה או נמוך מ-500 אלפיות השנייה פירושו שדרוש שיפור של מהירות התגובה של הדף.
  • ערך INP מעל 500 אלפיות השנייה מציין שמהירות התגובה בדף נמוכה.
ערכי INP תקינים הם 200 אלפיות שנייה או פחות, ערכים גרועים גדולים מ-500 אלפיות שנייה, וכל מה שביניהם טעון שיפור.

מה קורה באינטראקציה?

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

הגורם העיקרי לאינטראקטיביות הוא לעיתים קרובות JavaScript, אף על פי שדפדפנים מספקים אינטראקטיביות באמצעות פקדים שאינם מופעלים על ידי JavaScript, כגון תיבות סימון, לחצני בחירה ופקדים המופעלים על ידי CSS.

מבחינת INP, המערכת מזהה רק את סוגי האינטראקציות הבאים:

  • לחיצה עם העכבר.
  • מקישים על מכשיר עם מסך מגע.
  • הקשה על מקש במקלדת פיזית או במקלדת שמופיעה במסך.

האינטראקציות מתרחשות במסמך הראשי או ב-iframes שמוטמעים במסמך. למשל, לחיצה על 'הפעלה' בסרטון מוטמע. משתמשי הקצה לא ידעו מה נמצא ב-iframe או לא. לכן, נדרשת INP בתוך מסגרות iframe כדי למדוד את חוויית המשתמש בדף ברמה העליונה. חשוב לשים לב שלממשקי ה-API של JavaScript באינטרנט לא תהיה גישה לתוכן ה-iframe, לכן ייתכן שלא תהיה אפשרות למדוד את ה-INP בתוך iframe. הפעולה הזו תראה הבדל בין CrUX ו-RUM.

אינטראקציות יכולות לכלול שני חלקים, כשבכל אחד יש מספר אירועים. לדוגמה, הקשה על מקש הזה כוללת את האירועים keydown, keypress ו-keyup. אינטראקציות עם הקשה כוללות אירועים של pointerup ו-pointerdown. האירוע שיימשך הכי הרבה זמן באינטראקציה ייבחר בתור זמן האחזור של האינטראקציה.

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

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

במה שונה INP מהשהיית קלט ראשון (FID)?

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

FID הוא גם מדד של מהירות התגובה לטעינה, ולכן הנימוק הוא שאם באינטראקציה הראשונה עם דף בשלב הטעינה לא ניתן להבחין בעיכוב בקלט, או שבאינטראקציה הראשונה בדף נוצר רושם ראשוני טוב.

INP עוסק יותר בחשיפות ראשונות. באמצעות דגימת כל האינטראקציות, ניתן להעריך את מידת הרספונסיביות באופן מקיף, מה שהופך את INP למדד מהימן יותר לגבי הרספונסיביות הכוללת בהשוואה ל-FID.

מה קורה אם לא מדווח ערך INP?

ייתכן שדף לא יחזיר ערך INP. יכולות להיות לכך כמה סיבות:

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

איך מודדים INP

אפשר למדוד את ה-INP גם בשדה וגם בשיעור ה-Lab באמצעות מגוון כלים.

בשדה

במצב אידיאלי, האופטימיזציה של INP תתחיל בנתוני שטח. במיטבם, נתוני השדות מ-Real User Monitoring (RUM) יספקו לא רק את ערך ה-INP של דף, אלא גם נתונים לפי הקשר שמדגישים איזו אינטראקציה ספציפית הייתה אחראית לערך ה-INP עצמו, האם האינטראקציה התרחשה במהלך טעינת הדף או אחריה, סוג האינטראקציה (קליק, הקשה או הקשה) ומידע חשוב נוסף.

אם האתר שלכם עומד בתנאים להשתתפות בדוח חוויית המשתמש ב-Chrome (CrUX), אפשר לקבל במהירות נתוני שדות עבור INP דרך CrUX ב-PageSpeed Insights (ומדדי ליבה לבדיקת חוויית המשתמש באתר). לכל הפחות, תוכלו לקבל תמונה ברמת המקור של ה-INP של האתר, אבל במקרים מסוימים תוכלו גם לקבל נתונים ברמת הדף.

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

במעבדה

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

איך לשפר את ה-INP

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

יומן שינויים

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

כדי לעזור לכם לנהל זאת, כל השינויים בהטמעה או בהגדרות של המדדים האלה יופיעו ביומן השינויים הזה.

אם יש לכם משוב לגבי המדדים האלה, תוכלו לשלוח אותו בקבוצת Google בנושא Web-vitals-feedback.