אחסון בצד הלקוח חיוני ליישומי אינטרנט. זה אולי לא חסין כדורים כמו אחסון בצד השרת, אבל בלעדיו, אפליקציות אינטרנט לא יוכלו ליישם תכונות מודרניות רבות. כל מיני תכונות תלויות באחסון בצד הלקוח, החל מהפעלות במשחקים ועד לעגלות קניות באתרי מסחר אלקטרוני.
אחסון בצד הלקוח מאפשר גם לאפליקציות אינטרנט ליישם ארכיטקטורה הממוקדת בפרטיות. אתה יכול להשתמש בו כדי להבטיח שמידע רגיש לעולם לא יעזוב את המכשיר של המשתמש.
מהו אחסון בצד הלקוח?
בפיתוח אינטרנט, אחסון בצד הלקוח מתייחס לדרכים השונות בהן דפדפני אינטרנט יכולים לאחסן נתונים. לאחר מכן, יישום יכול להשתמש בנתונים אלה כדי לספק פונקציונליות למשתמשים. אחסון בצד הלקוח הוא קריטי מכמה סיבות:
- הגישה לנתונים המאוחסנים בלקוח מהירה משמעותית, והאפליקציה שלך יכולה לגשת אליהם ללא האינטרנט.
- אחסון בצד הלקוח מקל על האפליקציה שלך לזכור את ההעדפות של כל משתמש.
- אחסון חלק מהנתונים באופן קבוע על הלקוח מקל על ההגנה על פרטיות המשתמש.
- אחסון כל נתוני האפליקציה בשרת הוא יקר, במיוחד בהיקפים גדולים.
ישנן מספר צורות שונות של אחסון בצד הלקוח שבהן תוכל להשתמש ביישומי האינטרנט שלך.
עוגיות
קובץ Cookie של דפדפן הוא חלק מנתוני מפתח/ערך המאוחסנים כמחרוזת במחשב שלך. דפדפנים שולחים את כל העוגיות של אתר מסוים לשרת האתר בכל בקשה. קובצי Cookie היו הסוג הראשון (ולמשך זמן מה, היחיד) של אחסון בצד הלקוח.
אין הגבלה רשמית על גודל קובץ ה-cookie, אך דפדפנים בודדים מציבים מגבלות שונות על גודל ומספר קובצי ה-cookie שאתה יכול להגדיר. ה RFC 6265 סעיף 6.1 קובע את יכולות העוגיות המינימליות הבאות שדפדפנים (סוכני משתמש) צריכים לספק:
להטמעות מעשיות של סוכני משתמש יש מגבלות על מספר וגודל העוגיות שהם יכולים לאחסן. סוכני משתמשים לשימוש כללי צריכים לספק כל אחת מהיכולות המינימליות הבאות:
- לפחות 4096 בתים לכל קובץ cookie (כפי שנמדד בסכום של אורך השם, הערך והתכונות של ה-cookie).
- לפחות 50 קובצי Cookie לדומיין.
- לפחות 3000 עוגיות בסך הכל.
קובצי Cookie יכולים להישאר בדפדפן לפרקי זמן שונים. חלקם יפוג בסוף הפעלת עמוד, ולחלקם יש תאריכי תפוגה שרירותיים שיכולים להימשך עד חודשים אל העתיד.
דפדפנים יוצרים הפעלת עמוד כשאתה פותח כרטיסייה חדשה, והם מסיימים אותה כשאתה סוגר את הכרטיסייה או הדפדפן. אם תטען מחדש או תרענן את הדף, הדפדפן לא יסיים את הפעלת הדף.
מקרי שימוש עבור קובצי Cookie
קובצי Cookie מתאימות ביותר לאחסון פיסות נתונים קטנות שהשרת צריך לקרוא או לשנות לעתים קרובות. למה?
- קובצי Cookie מצורפים אוטומטית לכל בקשות הרשת
- עוגיות יכולות לאחסן רק כמויות קטנות של נתוני מחרוזת.
אתה יכול להשתמש בקובצי Cookie כדי לזהות משתמש (כמו מזהה הפעלה), להקליט ביקור בדף למטרות סימניות או לאחסן את הניקוד הגבוה של המשחק.
אחסון מקומי
כמו קובץ cookie, localStorage הוא מאגר מפתח/ערך המאחסן נתוני מחרוזת. בעוד ששני סוגי האחסון דומים, אחסון מקומי וקובצי Cookie שונים בכמה דרכים:
- LocalStorage תלוי ב-JavaScript.
- הנתונים ב-localStorage נמצאים בעיקר בדפדפן. אתה צריך לשלוח אותו בכוונה לשרת, במקום שהדפדפן ישלח אותו בכל בקשה.
- ל- LocalStorage אין תאריך תפוגה. זה נמשך על הלקוח עד שמפתח מוחק אותו עם JavaScript או שהמשתמש מנקה את אחסון הדפדפן שלו.
- ל- LocalStorage קיבולת אחסון גדולה בהרבה. ה מפרט WHATWG לא מציין גבול קשה אבל, לפי ויקיפדיה, הגודל המינימלי של localStorage בין הדפדפנים הגדולים הוא 5 MB:
דפדפנים מגבילים קובצי Cookie ל-4 קילובייט. אחסון אינטרנט מספק קיבולת אחסון גדולה בהרבה:
- Opera 10.50+ מאפשר 5 MB
- Safari 8 מאפשר 5 MB
- Firefox 34 מאפשר 10 MB
- Google Chrome מאפשר 10 MB לכל מקור
- Internet Explorer מאפשר 10 MB לכל אזור אחסון
מקרי שימוש עבור LocalStorage
LocalStorage מושלם לאחסון כמות גדולה של נתונים שהשרת רק לעתים רחוקות צריך להתייחס אליהם. זה יכול להיות הגדרות משתמש של אפליקציה, פרטי תצורת ערכת נושא או הנתונים בטופס שמולא לאחרונה. הסיבה לכך היא של-localStorage מגבלת אחסון גדולה בהרבה מזו של עוגיות, אבל אתה צריך לעשות מאמץ נוסף כדי לשלוח את הנתונים שלו לשרת.
אם אתה מאחסן את הנתונים בתור JSON, אתה יכול לאחסן נתונים מורכבים למדי באמצעות localStorage, למרות שהוא יכול לאחסן רק מחרוזות.
LocalStorage פגיע ל התקפות XSS, כך שלא כדאי לאחסן בו נתוני לקוח רגישים.
SessionStorage
SessionStorage הוא מאגר מפתח/ערך שעובד כמעט זהה ל-localStorage, חוץ מדבר אחד. הנתונים המאוחסנים נמשכים רק למשך הפעלת עמוד.
מקרי שימוש עבור SessionStorage
אתה יכול להשתמש ב-SessionStorage כדי לאחסן את אותו סוג של נתונים כמו LocalStorage, אך רק כאשר הנתונים אינם צריכים להימשך מעבר להפעלת עמוד.
IndexedDB
IndexedDB הוא ממשק API רב עוצמה של דפדפן לאחסון כמויות גדולות של נתונים מובנים. זהו מסד נתונים עסקה, מונחה עצמים, המאחסן נתונים בצמדי מפתח/ערך.
אם אתה מתמודד עם כמויות קטנות יותר של נתונים, localStorage/sessionStorage היא הבחירה הטובה והקלה יותר. למרבה הצער, הם מוגבלים על ידי קיבולת האחסון שלהם והעובדה שהם יכולים לאחסן רק נתוני מחרוזת. IndexedDB לא רק מאפשר אחסון סוגים שונים של נתונים כולל קבצים/נתונים בינאריים, אלא הוא יכול גם לאחסן הרבה יותר נתונים. IndexedDB גם בונה אינדקסים של התוכן שלו כדי לאפשר חיפוש מהיר במסד הנתונים.
מקרי שימוש עבור IndexedDB
IndexedDB הוא בעצם מסד נתונים NoSQL בדפדפן, והוא יכול לאחסן כמויות גדולות מאוד של נתונים. כל מקרה שימוש הדורש אחסון של מעל 10 מגה-בייט של נתונים מתאים ל-IndexedDB.
בניגוד לצורות אחרות של אחסון דפדפן, IndexedDB אינו מוגבל לאחסון מחרוזות. IndexedDB יכול לאחסן נתונים מכל סוגי JavaScript הסטנדרטיים. אם אתה בונה יישום אינטרנט שיעבוד בעיקר במצב לא מקוון, אתה יכול להשתמש ב- IndexedDB כדי לאחסן את כל נתוני היישום.
אחסון בצד הלקוח הוא גמיש וחזק
המונח אחסון בצד הלקוח מתייחס לאחסון נתוני יישומים בדפדפן. אחסון בצד הלקוח חיוני לתפקוד רוב יישומי האינטרנט המודרניים. ישנם סוגים שונים של אחסון בצד הלקוח: קובצי Cookie, Local/SessionStorage ו-IndexedDB.
לכל סוגי האחסון בדפדפן יש מגבלות שונות על הקיבולת שלהם ועל סוג הנתונים שהם יכולים לאחסן. קובצי Cookie הם הסוג המצומצם ביותר, Local/SessionStorage הוא הנוח ביותר, ו-IndexedDB הוא החזק ביותר.