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

This translation is incomplete. Please help translate this article from English

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

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

אלו טכנולוגיות משתמשות באחסנת הנתונים של הדפדפן?

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

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

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

"זמן הגישה האחרון" של מקורות מתעדכן כאשר כל אחד מאלה מופעל/מושבת  — פינוי מקורות ימח' נתונים עבור כל לקוחות המכסה.

בכרום/אופרה, ממשק פיתוח היישומים של ניהול המכסות מטפל בניהול עבור  AppCache, IndexedDB, WebSQL, ו-File System API.

טיפוסים שונים של אחסנת נתונים

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

אחסנה מופיעה במספר טיפוסים:

  • קבועה : אלה הנתונים שבכוונתנו לשמור בהישג יד לטווח רחוק. הם יפונו אך ורק על פי בחירת המשתמש/ת (לדוגמה, בפיירפוקס תוכלו לבחור למחוק את כל הנתונים המאוחסנים ממקורות נבחרים על ידי גישה ל"העדפות" ושימוש באפשרויות תחת "פרטיות ואבטחה-> עוגיות ונתוני אתרים").
  • זמנית: אלו נתונים שאינם צריכים להישמר לזמן רב כל כך. הם יפונו תחת מדיניות השימוש המאוחר ביותר (LRU policy) כאשר כמות הנתונים תגיע ל- מגבלות האחסנה.

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

כברירת מחדל האחסנה היא זמנית; מפתחים יכולים לבחור להשתמש באחסנה קבועה לאתרים שלהם באמצעות השיטה  StorageManager.persist() הזמינה ב-Storage API.

היכן מאוחסנים הנתונים?

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

  • <profile>/storage — התיקייה הראשית של הרמה הגבוהה ביותר לאחסון מתוחזקת על ידי מנהל המכסות (ראו להלן)
  • <profile>/storage/permanent — תיקיית מאגר הנתונים הקבועים
  • <profile>/storage/temporary — תיקיית מאגר הנתונים הזמניים
  • <profile>/storage/default — מאגר ברירת המחדל של הנתונים

לתשומת לבך: אחרי שהוצג ה Storage API, התיקייה "permanent" יכולה להיחשב  מיושנת; התיקייה  "permanent" מאחסנת רק את בסיסי הנתונים מהטיפוס הקבוע IndexedDB. לא משנה אם מצב התיבה הוא  "best-effort" או "persistent" — נתונים   נשמרים תחת <profile>/storage/default.

לתשומת לבך: בפיירפוקס , ניתן למצוא את תיקיית הפרופיל שלך על ידי הכנסת  about:support בשורת ה- URL , ולחיצה על הכפתור  פתיחת ספרייה  (למשל Show ב- Finder על Mac OS X) על יד הכותרת Profile Folder .

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

לתשומת לבך: אל למשתמשים להוסיף תיקיות וקבצים משלהם תחת  <profile>/storage. זה יגרום לאתחולי אחסנה להיכשל; לדוגמא, open() יגרום לאירוע שגיאה.

מגבלות האחסנה

שטח האחסנה המירבי של הדפדפן הוא דינמי — הוא מבוסס על גודל הדיסק הקשיח.  הגבול הגלובלי מחושב כ-50% מהשטח הפנוי על הדיסק. בפיירפוקס, כלי פנימי של הדפדפן הקרוי   Quota Manager כוקב אחרי גודל חלל הדיסק שכל מקור מנצל עד תום, ומוחק נתונים אם יש צורך בכך.

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

קיים גם גבול הקרוי group limit — הוא מוגדר כ- 20% מהגבול הגלובלי, אך יש לו מינימום של 10 מ"ב ומקסימום של 2 ג"ב. כל מקור הוא חלק מקבוצה (קבוצת מקורות). קיימת קבוצה לכל דומיין eTLD+1. לדוגמה:

  • mozilla.org — group1, origin1
  • www.mozilla.org — group1, origin2
  • joe.blogs.mozilla.org — group1, origin3
  • firefox.com — group2, origin4

בקבוצה זו, mozilla.org, www.mozilla.org, ו-joe.blogs.mozilla.org יכולים במצטבר להשתמש במקסימום  20% מהגבול הגלובלי. ל- firefox.com יש מקסימום בנפרד של 20%.

שני הגבולות מגיבים בצורה שונה כשמגיעים לגבול:

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

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

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

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

מדיניותLRU

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

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

ראו גם