Session و Local Storage هر دو ذخیرهسازی دادههای سمت سرویس گیرنده هستند که میتوانید با استفاده از جاوا اسکریپت به آنها دسترسی داشته باشید. پس چگونه با هم تفاوت دارند؟
Session و Local Storage روش های ذخیره سازی مرورگر هستند که به شما امکان می دهند داده ها را در کنار درخواست های HTTP بدون حالت ذخیره کنید. آنها جایگزینی برای ذخیره سازی مبتنی بر کوکی هستند و کاربردهای زیادی در توسعه وب دارند.
در حالی که آنها به روشی بسیار مشابه عمل می کنند، تفاوت های قابل توجهی وجود دارد که باید از آنها آگاه باشید
ذخیرهسازی محلی و ذخیرهسازی جلسه: کاربرد آنها چیست؟
ذخیرهسازی محلی و جلسه، APIهای جاوا اسکریپت هستند که میتوانید از آنها برای ذخیره دادهها در سمت کلاینت استفاده کنید. آنها به یک وب سایت اجازه می دهند تا داده ها را در مرورگر ذخیره کند و به مرورگر دستور می دهند که بعداً به آن دسترسی پیدا کند.
بسته به نیاز خود، می توانید از ذخیره سازی محلی یا جلسه ای برای ذخیره داده ها استفاده کنید. هر دو روش ذخیرهسازی مشابه کوکیها هستند، اما بدون نگرانیهای حفظ حریم خصوصی در اطراف کوکیها. بنابراین، بیشتر وبسایتهای مدرن ترجیح میدهند فقط از روشهای ذخیرهسازی وب استفاده کنند یا آنها را با کوکیها به عنوان جایگزین ترکیب کنند.
برخلاف کوکیها، ذخیرهسازی محلی و ذخیرهسازی جلسه دادهها را از طریق هدرهای HTTP به سرور ارسال نمیکنند. شما باید از آنها فقط برای عملکرد سمت مشتری استفاده کنید.
علاوه بر این، فضای ذخیرهسازی محلی و جلسه هر یک محدودیت ذخیرهسازی در حدود 5 مگابایت در هر دامنه دارند. آنها نسبت به کوکی ها که تنها 4 کیلوبایت ظرفیت در هر کوکی دارند، فضای ذخیره سازی بیشتری ارائه می دهند.
Session Storage چیست؟
یک جلسه مرور تقریبی استفاده شما از یک وب سایت است. اگر از سایتی بازدید میکنید، کمی در اطراف جستجو میکنید، سپس رایانه خود را خاموش میکنید، میتوانید آن زمان را به عنوان یک جلسه در نظر بگیرید. پیکربندی مرورگر شما ممکن است این را به روشهای ظریفی تغییر دهد، اما هدف یک جلسه نشان دادن بخش زمانی است که با یک سایت در تعامل هستید.
ذخیره سازی جلسه برای هر برگه مرورگر منحصر به فرد است. اگر یک برگه جدید باز کنید و به همان سایت بروید، یک جلسه جدید با فضای ذخیره سازی خودش شروع می کنید. با این حال، اگر از ویژگی “برگه تکراری” در مرورگر خود استفاده می کنید، ممکن است از همان جلسه مجددا استفاده کنید. شما نمی توانید خیلی روی جزئیات خاص یک «جلسه» تکیه کنید. در عوض، روی مفهوم اصلی تمرکز کنید: ذخیرهسازی جلسه موقتی است.
ذخیرهسازی جلسه دارای روشهای API داخلی برای کار با دادههای جفت کلید/مقدار است. شما می توانید داده ها را از جاوا اسکریپت ذخیره کنید:
sessionStorage.setItem("key", "value");
و برای بازیابی مقدار ذخیره شده:
sessionStorage.getItem("key");
توجه داشته باشید که هر دو کلید و مقدار فقط انواع رشته ای هستند. اگر می خواهید نوع دیگری را ذخیره کنید، باید آن را به صورت صریح یا ضمنی به رشته تبدیل کنید.
Local Storage چیست؟
ذخیرهسازی محلی دادهها را در تمام نمونههای یک سایت، چه در برگهها یا پنجرههای مختلف، نگهداری میکند. همچنین دائمی است، بنابراین وقتی مرورگر خود را ببندید، داده ها ناپدید نمی شوند.
وقتی وبسایتی را باز میکنید که قبلاً از فضای ذخیرهسازی محلی استفاده میکرده است، همیشه به آن دادههای ذخیره شده دسترسی خواهد داشت.
به عنوان یک توسعه دهنده وب، می توانید از این مکانیسم برای حفظ داده های مربوط به یک کاربر استفاده کنید. برخی از وبسایتها ممکن است از این مورد استفاده کنند تا شما را به سیستم وارد کنند یا تجربه شخصیسازیشدهتری ارائه دهند.
مانند ذخیرهسازی جلسه، میتوانید یک شی ذخیرهسازی محلی را با یک خط کد جاوا اسکریپت تنظیم کنید:
localStorage.setItem("key", "value");
برای دسترسی به مقدار کلید:
localStorage.getItem("key");
توجه داشته باشید که این روشها مانند ذخیرهسازی جلسه عمل میکنند، فقط از نوع دیگری از ذخیرهسازی داده استفاده میکنند.
در حالی که ذخیرهسازی جلسه دادهها را به محض پایان جلسه پاک میکند، تنها راه برای پاک کردن فضای ذخیرهسازی محلی، حذف صریح آن است. هر دو نوع ذخیره سازی دو روش برای پاک کردن داده ها ارائه می دهند. اولی یک مورد خاص از داده را بر اساس کلید آن حذف می کند:
localStorage.removeItem("key");
شما همچنین می توانید تمام داده های ذخیره شده توسط سایت خود را بدون توجه به کلید آن حذف کنید:
localStorage.clear();
می توانید در مورد این روش های API ذخیره سازی وب در وب سایت javascript.info اطلاعات بیشتری کسب کنید.
چه زمانی به ذخیره سازی محلی نیاز دارید؟
از آنجایی که ذخیرهسازی محلی دائمی است، بهترین کار این است که دادهها را در تمام بازدیدهای کاربر حفظ کنید. اگر میخواهید تنظیمات برگزیده سایت را ذخیره کنید یا دادههای بلندمدت را در حافظه پنهان ذخیره کنید، ذخیرهسازی محلی مناسب است. ممکن است نخواهید داده های حساس تری را با استفاده از حافظه محلی ذخیره کنید، زیرا دائمی است.
از آنجایی که ذخیرهسازی محلی و جلسه روشهای جلویی هستند، ممکن است بخواهید از استفاده از آنها برای عملکردهای مبتنی بر سرور مانند ورود کاربر خودداری کنید. در این موارد می توانید کوکی ها را به عنوان یک جایگزین در نظر بگیرید.
چه زمانی به ذخیره سازی جلسه نیاز دارید؟
اگر می خواهید داده ها را فقط در زمانی که کاربر با سایت شما تعامل دارد ذخیره کنید، ذخیره سازی جلسه ایده آل است. این می تواند برای ذخیره کوتاه مدت یا استفاده از داده های مربوط به بازدید خاصی از سایت شما باشد.
ذخیرهسازی جلسه برای ذخیره اطلاعات حساستر بهتر است زیرا منقضی میشود.
فضای ذخیرهسازی محلی در مقابل فضای ذخیرهسازی جلسه: کدام یک امنتر است؟
همانطور که مشاهده کردید، روشهای ذخیرهسازی محلی و جلسه از بسیاری جهات مشابه هستند، اما همچنان موارد استفاده مناسب دارند. شما نباید هیچکدام را ایمن در نظر بگیرید زیرا آنها فناوری های جلویی هستند که جاوا اسکریپت به آنها دسترسی دارد. با این حال، ذخیره سازی جلسه بسیار راحت است و ماهیت موقت آن اطمینان بخش است.
ذخیرهسازی محلی دائمی است، بنابراین ممکن است نگرانیهای امنیتی بیشتری ایجاد کند. هر کسی که یک مرورگر را باز می کند، از نظر تئوری، می تواند به حافظه محلی دسترسی داشته باشد. شما باید از نحوه عملکرد حملات XSS و نحوه جلوگیری از آنها آگاه باشید.
ذخیرهسازی محلی یا ذخیرهسازی جلسه: کدام را باید استفاده کنید؟
ذخیره سازی Session به دلیل ماهیت موقت آن کمی امن تر است. با این حال، انتخاب روش ذخیره سازی وب به نیاز شما بستگی دارد. فضای ذخیره سازی جاوا اسکریپت فقط برای استفاده در سمت مشتری مناسب است. اما یک فروشگاه داده مبتنی بر مرورگر را ارائه می دهد و استفاده از آن بسیار آسان است.
به یاد داشته باشید که در حالی که حافظه محلی داده ها را در چندین برگه ذخیره می کند، ذخیره سازی جلسه در بیشتر موارد برای هر برگه منحصر به فرد است. شما باید اطمینان حاصل کنید که برنامه شما تا حد امکان کمتر فرضیات را ایجاد می کند و موارد لبه را برآورده می کند.
کوکیها شکل قدیمیتری از ماندگاری دادهها هستند، اما هنوز هم بسیار مورد استفاده هستند. ممکن است بخواهید آنها را برای اطلاعاتی که باید به سرور منتقل کنید بررسی کنید.