מחיקת כרטיסיות ב-Chrome – ניסוי שמירת זיכרון

Addy Osmani
Addy Osmani

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

לא כל הכרטיסיות הפתוחות הן כרטיסיות. אם אין מספיק זיכרון, Chrome יכול למחוק כרטיסיות רקע לא מעניינות.

אפשר למחוק כרטיסיות כניסוי ב-Chrome 46 ואילך.

רקע

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

נפח זיכרון נדרש לכל כרטיסייה

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

מנהל המשימות הנדרש לזיכרון

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

מחיקת כרטיסיות שלא בשימוש

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

יש לנו גם תכונה חדשה נוספת שמאפשרת לשמור במטמון את כל המשאבים של הכרטיסיות באופן מקומי. התכונה עובדת טוב גם עם מחיקת כרטיסיות במצב אופליין. כשהכרטיסייה מופעלת מחדש, אנחנו מציעים אפשרות לטעון מחדש את גרסת המטמון שכבר נטענה דרך הרשת. כדי לאפשר טעינה מחדש של דף מהמטמון, תוכלו לנסות ניסוי אחר בקטע chrome://flags/#show-saved-copy.

אפשר לנסות למחוק כרטיסיות היום. לשם כך, צריך להפעיל את האפשרות דרך chrome://flags/#enable-tab-discarding ולהפעיל מחדש את Chrome. אפשר לקבוע אם להפעיל או להשבית אותה דרך אותו דף chrome://flags ב-Chrome.

הפעלת הכרטיסייה של מחיקת צילום המסך.
צילום מסך של לחצן ההפעלה מחדש.

דף חדש בשם chrome://discards מאפשר לראות אילו כרטיסיות פתוחות כרגע, ואנחנו מנסים לשתף איתכם תובנות לגבי מידת העניין (לדעתנו) מבחינתכם, מהגבוהה ועד הנמוכה ביותר.

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

כדי לבדוק את התכונה אפשר לבצע את התנהגות הגלישה הרגילה עד שהמערכת תגיע למצב של נפח זיכרון נמוך, או להפעיל כרטיסיית 'מחיקת כרטיסייה' מ-about:discards על ידי לחיצה על 'מחיקת כרטיסייה עכשיו'. הפעולה הזו תמחק את הכרטיסייה האחרונה ברשימה. אפשר גם למחוק כרטיסייה מסוימת מהרשימה על ידי לחיצה על הלחצן 'מחיקה' המתאים לה. כרטיסייה שנמחקה תוצג עם התחילית [deleteed].

צילום מסך לדוגמה של כרטיסייה שנמחקה.

מחיקת הכרטיסייה מוחקת את הכרטיסיות לפי הסדר הבא:

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

הפעלנו את הניסוי של מחיקת כרטיסייה ב-Chrome Canary ל-Windows ול-Mac OS, ובקרוב גם הטמעה של Linux.

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

השראה: שלום, מותנית מעולה

אם מחיקת הכרטיסייה נשמעת מוכרת, הסיבה לכך היא שבטח נתקלת בתוספים שימושיים ל-Chrome שמספקים גרסה מעט פשוטה יותר של הרעיון הזה, כמו The Great שמירה (The Great suspendeder). המטרה של The Great שמירה (כתילה) היא לצמצם את הזיכרון של Chrome ואת טביעת הרגל הפחמנית של ה-GPU, על ידי השהיית כרטיסיות אחרי פרק זמן מותאם אישית של חוסר פעילות.

צילום מסך של ההשעיה.

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

צילום מסך של סמל האתר של כרטיסיות מושעים.

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

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

שיפורים עתידיים: הכלי להמשכים של כרטיסיות

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

הכלי הסידורי יוצר סריאליזציה כמעט לכל מה ש-Chrome, Blink ו-V8 צריכים כדי לשמור כרטיסייה בצורה תקינה (תוספים ל-Chrome שעוסקים בבעיה הזו בעבר לא הצליחו להגיע בקלות). עריכה בהמשכים תכלול את החשודים הרגילים: ה-DOM (כולל הרבה WebGL ו-Canvas), CSS והמצב של V8 JavaScript VM.

צילום מסך של קונספט של יוצר טורי

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

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

אפשר לנסות למחוק כרטיסיות ולספר לנו מה דעתך

נשמח לדעת אם התכונה הזו מועילה לכם ואיך ניתן לשפר אותה. אפשר לנסות את התכונה, להתנסות בה (במיוחד אם אתם אגרגטורים של כרטיסיות!) ולספר לנו מה דעתכם בתגובות. :) נשמח לקבל מכם כרטיסים על באגים שאתם נתקלים בהם בכתובת crbug.com.