איך טעינה מהירה יותר של משאבים של צד שלישי יכולה להגדיל את ההכנסות
בניתוח המקרה הזה נסביר איך שיפור הביצועים של משאבים של צד שלישי יכול לשפר את המדדים העסקיים. במחקר קודם נמדד העלות של זמן טעינה ארוך יותר של מודעות, אבל המחקר הזה מדגים את הערך של שיפור הביצועים בעולם האמיתי:
0.5%
עלייה בהכנסות של בעלי תוכן דיגיטלי
2%
עלייה בטעינה מוקדמת של סקריפטים של מודעות
מקור: נתונים פנימיים של Google, יוני עד יולי 2019.
רקע
Google Publisher Tag (GPT) הוא הסקריפט לתיוג מודעות ב-Google Ad Manager, שמבקש מודעות לרשת המדיה ומרינדר אותן באינטרנט. בעזרת הטמעה של כותרת HTTP פשוטה מסוג stale-while-revalidate
ב-GPT, צוות GPT הצליח לשפר את המהירות והביצועים של מודעות Google לרשת המדיה עבור שותפי התוכן הדיגיטלי שלו. אפשר להשתמש באותה טכניקה בכל תרחיש אחר שבו חשוב יותר לטעון סקריפטים במהירות האפשרית מאשר לטעון את הקוד העדכני ביותר.
הבעיה
GPT נפרס כסקריפט של אתחול (bootstrapping), gpt.js
, עם אורך חיים קצר (TTL) של 15 דקות. TTL קצר מאפשר לעדכן את הסקריפט או לבצע בו חזרה לאחור במהירות. לאחר הטעינה, gpt.js
מבקש ומטעין סקריפטים נוספים להטמעה, עם TTL ארוך יותר.
לאחר שתוקף ה-TTL של 15 הדקות יפוג, הגרסה של gpt.js
במטמון תהיה לא תקפה וצריך יהיה לאמת אותה מחדש. בעבר, תהליך האימות מחדש כלל שליחת בקשה אסינכררונית לרשת כדי לאחזר עותק חדש של הסקריפט, וכתוצאה מכך זמן האחזור של הבקשה הראשונה להצגת מודעה האריכו.
הפתרון
המאפיין stale-while-revalidate
משמש את הכותרת Cache-Control
ומגדיר חלון זמן נוסף שבו המטמון יכול להשתמש בנכס לא עדכני בזמן שהנכס מאומת מחדש באופן אסינכרוני. כך המפתחים יכולים לשמור על איזון בין מיידיות – טעינה מיידית של תוכן שנשמר במטמון – לבין עדכניות – הבטחת שימוש בעדכונים של התוכן שנשמר במטמון בעתיד.
מקרה לדוגמה בנושא מודעות לרשת המדיה של Google
צוות GPT הוסיף את הכותרת Cache-Control
לתגובת ה-HTTP gpt.js
בשנת 2016, לקראת הטמעת stale-while-revalidate
בדפדפנים:
cache-control: private, max-age=900, stale-while-revalidate=3600
ההגדרה הזו אומרת שאם מתבצעת בקשה ל-gpt.js
בין 15 ל-60 דקות אחרי הערך הקודם ששמור במטמון, המערכת תשתמש בערך ששמור במטמון כדי למלא את הבקשה, גם אם הוא לא עדכני. במקביל, תישלח בקשה לאימות מחדש ברקע כדי לאכלס את המטמון בערך חדש לשימוש עתידי.
השקנו את stale-while-revalidate
בגרסת 75 של Chrome ל-99% מכל התנועה, והשארנו 1% מהתנועה עם התכונה מושבתת באופן זמני כדי למדוד את ההשפעה שלה. כדי לבדוק את היעילות של stale-while-revalidate
בסקריפטים של מודעות, צוות GPT תיעד מדדים מ-1% מהתנועה הזו (קבוצת הניסוי) וגם מ-1% מדגימת התנועה שבה התכונה מופעלת (קבוצת הבקרה). במהלך שבועיים של תיעוד מדדים מדגימה של 5.2 מיליארד חשיפות של מודעות לרשת המדיה של Google, בקבוצת הבקרה נצפו:
- עלייה של 0.3% במספר החשיפות של המודעות.
- עלייה של 0.5% בהכנסות.
- עלייה של 2% בטעינות מוקדמות של סקריפטים של מודעות (פחות מ-500 אלפיות השנייה מתחילת טעינת הדף).
- עלייה של 1.1% במספר הטעינות המוצלחות של סקריפטים של מודעות באופן כללי.
כפי שמוצג בתרשים שלמעלה, אפשר לשייך את התוצאות של הניסוי הזה לעלייה במספר הטעינות המוצלחות של סקריפטים של מודעות, כאשר רוב הטעינות מתרחשות בשלב מוקדם בתהליך טעינת הדף.
הטמעת 'לא עדכני בזמן אימות מחדש' באתר
צוות GPT ראה ששינוי פשוט יחסית בכותרות HTTP באמצעות stale-while-revalidate
יכול לשפר את המהירות ולשפר את המדדים העסקיים. במאמר שמירה על עדכניות באמצעות stale-while-revalidate מוסבר בהרחבה איך מטמיעים את stale-while-revalidate
באתר שלכם.