ذخیره دادهها در مرورگر بازدیدکننده میتواند برنامه شما را ساده نگه دارد، از حریم خصوصی محافظت کند و تجربهای سریعتر ارائه دهد.
ذخیره سازی سمت مشتری برای برنامه های کاربردی وب ضروری است. ممکن است به اندازه فضای ذخیره سازی سمت سرور ضد گلوله نباشد، اما بدون آن، برنامه های وب قادر به پیاده سازی بسیاری از ویژگی های مدرن نیستند. همه انواع ویژگی ها به فضای ذخیره سازی سمت مشتری بستگی دارد، از جلسات در بازی ها تا سبد خرید در وب سایت های تجارت الکترونیک.
فضای ذخیره سازی سمت سرویس گیرنده همچنین برنامه های وب را قادر می سازد تا معماری حریم خصوصی محور را پیاده سازی کنند. می توانید از آن برای اطمینان از خروج داده های حساس از دستگاه کاربر استفاده کنید.
ذخیره سازی سمت مشتری چیست؟
در توسعه وب، ذخیره سازی سمت مشتری به روش های مختلفی که مرورگرهای وب می توانند داده ها را ذخیره کنند اشاره دارد. سپس یک برنامه می تواند از این داده ها برای ارائه عملکرد به کاربران استفاده کند. ذخیره سازی سمت مشتری به چند دلیل حیاتی است:
- دسترسی به داده های ذخیره شده روی کلاینت به طور قابل توجهی سریعتر است و برنامه شما می تواند بدون اینترنت به آنها دسترسی داشته باشد.
- ذخیره سازی سمت سرویس گیرنده به خاطر سپردن تنظیمات برگزیده هر کاربر برای برنامه شما آسان تر می شود.
- ذخیره برخی از داده ها به طور دائم بر روی مشتری، محافظت از حریم خصوصی کاربر را آسان تر می کند.
- ذخیره تمام داده های برنامه بر روی سرور، به ویژه در مقیاس های بزرگ، گران است.
چندین شکل مختلف از ذخیره سازی سمت سرویس گیرنده وجود دارد که می توانید در برنامه های وب خود از آنها استفاده کنید.
بیسکویت ها
کوکی مرورگر قطعه ای از داده های کلید/مقدار است که به عنوان یک رشته در رایانه شما ذخیره می شود. مرورگرها در هر درخواستی تمام کوکی های یک سایت خاص را به سرور سایت ارسال می کنند. کوکی ها اولین (و برای مدتی تنها) نوع ذخیره سازی سمت مشتری بودند.
هیچ محدودیت رسمی برای اندازه کوکی وجود ندارد، اما مرورگرهای فردی محدودیتهای متفاوتی را برای اندازه و تعداد کوکیهایی که میتوانید تنظیم کنید، قرار میدهند. RFC 6265 بخش 6.1 حداقل قابلیت های کوکی زیر را بیان می کند که مرورگرها (عامل های کاربر) باید ارائه دهند:
پیاده سازی های عامل کاربر عملی محدودیت هایی در تعداد و اندازه کوکی هایی دارند که می توانند ذخیره کنند. عامل های کاربری عمومی باید هر یک از حداقل قابلیت های زیر را ارائه دهند:
- حداقل 4096 بایت در هر کوکی (که با مجموع طول نام، مقدار و ویژگی های کوکی اندازه گیری می شود).
- حداقل 50 کوکی در هر دامنه.
- حداقل 3000 کوکی در کل.
کوکی ها می توانند برای مدت زمان متفاوتی در مرورگر باقی بمانند. برخی از آنها در پایان یک جلسه صفحه منقضی میشوند و برخی دارای تاریخ انقضای دلخواه هستند که میتواند تا ماهها در آینده طول بکشد.
مرورگرها هنگامی که یک برگه جدید را باز می کنید، یک جلسه صفحه ایجاد می کنند و زمانی که برگه یا مرورگر را می بندید، آن را پایان می دهند. اگر صفحه را دوباره بارگیری یا تازه سازی کنید، مرورگر جلسه صفحه را پایان نمی دهد.
از موارد برای کوکی ها استفاده کنید
کوکیها برای ذخیره قطعات کوچک دادهای که سرور بهطور مکرر نیاز به خواندن یا تغییر آنها دارد، مناسبتر هستند. چرا؟
- کوکی ها به طور خودکار به تمام درخواست های شبکه متصل می شوند
- کوکی ها فقط می توانند مقادیر کمی از داده های رشته ای را ذخیره کنند.
میتوانید از کوکیها برای شناسایی کاربر (مانند شناسه جلسه)، ثبت بازدید از صفحه برای اهداف نشانهگذاری یا ذخیره امتیاز بالای یک بازی استفاده کنید.
LocalStorage
مانند یک کوکی، localStorage یک ذخیره کلید/مقدار است که داده های رشته ای را ذخیره می کند. در حالی که هر دو نوع ذخیره سازی مشابه هستند، محل ذخیره محلی و کوکی ها از چند جهت متفاوت هستند:
- LocalStorage به جاوا اسکریپت بستگی دارد.
- داده ها در localStorage عمدتاً در مرورگر قرار دارند. شما باید عمداً آن را به سرور ارسال کنید، به جای اینکه مرورگر در هر درخواستی آن را ارسال کند.
- LocalStorage تاریخ انقضا ندارد. تا زمانی که توسعهدهنده آن را با جاوا اسکریپت حذف کند یا کاربر فضای ذخیرهسازی مرورگر خود را پاک کند، روی کلاینت باقی میماند.
- LocalStorage ظرفیت ذخیره سازی بسیار بیشتری دارد. مشخصات WHATWG محدودیت سختی را مشخص نمی کند، اما طبق ویکی پدیا، حداقل اندازه محلی ذخیره سازی در بین مرورگرهای اصلی 5 مگابایت است:
مرورگرها کوکی ها را به 4 کیلوبایت محدود می کنند. فضای ذخیره سازی وب ظرفیت ذخیره سازی بسیار بیشتری را فراهم می کند:
- Opera 10.50+ اجازه 5 مگابایت را می دهد
- سافاری 8 به 5 مگابایت اجازه می دهد
- فایرفاکس 34 اجازه 10 مگابایت را می دهد
- گوگل کروم به ازای هر مبدأ 10 مگابایت اجازه می دهد
- اینترنت اکسپلورر اجازه می دهد 10 مگابایت در هر منطقه ذخیره سازی
از Cases برای LocalStorage استفاده کنید
LocalStorage برای ذخیره حجم زیادی از داده ها که سرور به ندرت نیاز به ارجاع به آنها دارد، عالی است. این می تواند تنظیمات کاربر برنامه، جزئیات پیکربندی طرح زمینه یا داده های فرمی باشد که اخیراً پر شده است. این به این دلیل است که localStorage محدودیت ذخیره سازی بسیار بیشتری نسبت به کوکی ها دارد، اما باید تلاش بیشتری برای ارسال داده های آن به سرور انجام دهید.
اگر دادهها را بهعنوان JSON ذخیره میکنید، میتوانید با استفاده از localStorage دادههای پیچیده را ذخیره کنید، حتی اگر فقط رشتهها را ذخیره کند.
LocalStorage در برابر حملات XSS آسیب پذیر است، بنابراین شما نباید داده های حساس مشتری را در آن ذخیره کنید.
SessionStorage
SessionStorage یک فروشگاه کلید/مقدار است که تقریباً مانند localStorage کار می کند، به جز یک مورد. داده های ذخیره شده فقط برای طول یک جلسه صفحه باقی می مانند.
از Cases برای SessionStorage استفاده کنید
میتوانید از SessionStorage برای ذخیرهسازی همان نوع دادههایی مانند localStorage استفاده کنید، اما فقط زمانی که نیاز نباشد دادهها بیش از یک جلسه صفحه باقی بمانند.
IndexedDB
IndexedDB یک API مرورگر قدرتمند برای ذخیره مقادیر زیادی از داده های ساخت یافته است. این یک پایگاه داده تراکنشی و شی گرا است که داده ها را در جفت های کلید/مقدار ذخیره می کند.
اگر با حجم کمتری از داده ها سر و کار دارید، localStorage/sessionStorage انتخاب بهتر و آسان تری است. متأسفانه، آنها به دلیل ظرفیت ذخیره سازی خود و این واقعیت که فقط می توانند داده های رشته ای را ذخیره کنند، محدود شده اند. IndexedDB نه تنها امکان ذخیره انواع مختلف داده از جمله فایل ها/داده های باینری را فراهم می کند، بلکه می تواند داده های بسیار بیشتری را نیز ذخیره کند. IndexedDB همچنین نمایه هایی از محتویات خود ایجاد می کند تا امکان جستجوی سریع پایگاه داده را فراهم کند.
استفاده از Cases برای IndexedDB
IndexedDB اساسا یک پایگاه داده NoSQL در مرورگر است و می تواند حجم بسیار زیادی از داده ها را ذخیره کند. هر موردی که نیاز به ذخیره بیش از 10 مگابایت داده دارد برای IndexedDB مناسب است.
برخلاف سایر اشکال ذخیره سازی مرورگر، IndexedDB به ذخیره رشته ها محدود نمی شود. IndexedDB می تواند داده ها را از انواع استاندارد جاوا اسکریپت ذخیره کند. اگر یک برنامه وب میسازید تا در اصل به صورت آفلاین کار کند، میتوانید از IndexedDB برای ذخیره تمام دادههای برنامه استفاده کنید.
ذخیره سازی سمت مشتری انعطاف پذیر و قدرتمند است
اصطلاح ذخیره سازی سمت مشتری به ذخیره داده های برنامه در مرورگر اشاره دارد. ذخیره سازی سمت مشتری برای عملکرد اکثر برنامه های کاربردی وب مدرن ضروری است. انواع مختلفی از ذخیره سازی سمت سرویس گیرنده وجود دارد: کوکی ها، محلی/sessionStorage و IndexedDB.
همه انواع حافظه های مرورگر محدودیت های متفاوتی در ظرفیت و نوع داده ای دارند که می توانند ذخیره کنند. کوکیها محدودترین نوع هستند، Local/sessionStorage راحتترین نوع است و IndexedDB قدرتمندترین است.