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

Browser Support

  • Chrome: 96.
  • Edge: 96.
  • Firefox: not supported.
  • Safari: not supported.

Source

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

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

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

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

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

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

במדריך הזה נסביר איך פועלת 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 אלפיות שנייה, וכל ערך בטווח שביניהם טעון שיפור.
ערכים טובים של INP הם 200 אלפיות השנייה או פחות. ערכים נמוכים הם ערכים של יותר מ-500 אלפיות השנייה.

מה נכלל באינטראקציה?

תרשים שבו מוצגת אינטראקציה בשרשור הראשי. המשתמש מזין קלט בזמן ריצה של משימות חסימה. הקלט מתעכב עד שהמשימות האלה מסתיימות. לאחר מכן, פונקציות הטיפול באירועים pointerup,‏ mouseup ו-click פועלות, ולאחר מכן המערכת מתחילה את עיבוד התמונה והצביעה עד שהפריים הבא מוצג.
מחזור החיים של אינטראקציה. עיכוב קלט מתרחש עד שמנהלי האירועים מתחילים לפעול. יכול להיות שהעיכוב נגרם כתוצאה מגורמים כמו משימות ארוכות בשרשור הראשי. לאחר מכן, יתבצעו קריאות החזרה (callbacks) של פונקציית הטיפול באירוע של האינטראקציה, ויהיה עיכוב לפני הצגת המסגרת הבאה.

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

בהתאם למטרות של INP, רק סוגי האינטראקציות הבאים נצפים:

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

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

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

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

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

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

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

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

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

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

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

איך מודדים INP

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

בשדה

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

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

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

במעבדה

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

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

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

איך לשפר את INP

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

יומן שינויים

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

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

אם יש לכם משוב על המדדים האלה, אתם יכולים לשלוח אותו בקבוצת Google‏ web-vitals-feedback.

בוחנים את הידע

מהי המטרה העיקרית של מדד INP?

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

אילו מסוגי האינטראקציות הבאים נצפים לצורך חישוב INP? (יש לבחור את כל האפשרויות הרלוונטיות)

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

איך נקבע זמן האחזור של אינטראקציה ב-INP?

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

מה ההבדל בין INP לבין FID?

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

באילו נסיבות נתוני INP לא יהיו זמינים לדף בכלים כמו PageSpeed Insights?

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

מהי השיטה היעילה ביותר לשחזור אינטראקציות איטיות בסביבת מעבדה?

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

החידון הזה נוצר על ידי Gemini 1.5 ונבדק על ידי בני אדם. שליחת משוב