אופטימיזציה של יעילות התוכן

Ilya Grigorik
Ilya Grigorik

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

איך נראית אפליקציית אינטרנט מודרנית? ארכיון HTTP יכול לעזור לנו לענות על השאלה הזו. הפרויקט עוקב אחרי אופן בניית האינטרנט על ידי סריקה תקופתית של האתרים הפופולריים ביותר (300,000 ומעלה מרשימת מיליון המובילים של Alexa) ותיעוד וצבירה של ניתוחי נתונים לגבי מספר המשאבים, סוגי התוכן ומטא-נתונים נוספים עבור כל יעד בנפרד.

מגמות בארכיון HTTP

האחוזון ה-50 אחוזון 75 האחוזון ה-90
HTML 13 KB 26 KB 54 KB
תמונות 528 KB 1213 KB 2384 KB
JavaScript 207 KB 385 KB 587 KB
CSS 24 KB 53 KB 108 KB
אחר 282 KB 308 KB 353 KB
סה"כ 1054 KB 1985 KB 3486 KB

הנתונים שלמעלה מתייחסים למגמת הגידול במספר הבייטים שהורדו ליעדים פופולריים באינטרנט בין ינואר 2013 לינואר 2014. כמובן שלא כל אתר צומח באותו קצב או דורש אותה כמות נתונים. לכן אנו מדגישים את הכמותיים השונים בהתפלגות: 50 (חציון), 75 ו-90.

אתר חציוני בתחילת 2014 מורכב מ-75 בקשות שסה"כ 1,054KB מתוך סך הבייטים שהועברו, והמספר הכולל של הבייטים (והבקשות) גדל בקצב קבוע במהלך השנה הקודמת. העובדה הזו כשלעצמה לא מפתיעה, אבל יש לה השלכות חשובות על הביצועים: כן, מהירויות האינטרנט גבוהות יותר, אבל הן מהירות יותר בקצב שונה במדינות שונות, ומשתמשים רבים עדיין כפופים למכסות נתונים ולתוכניות חיוב לפי שימוש יקר – במיוחד בניידים.

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

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