royalsite logo

5 فروردین 1404

WebStorage tutorial banner

آموزش قدم به قدم ذخیره داده ها در مرورگر

ذخیره‌سازی داده‌ها در سمت کاربر یا مرورگر با هدف افزایش سرعت، بهبود تجربه کاربری، و کاهش بار بر روی سرور ایجاد شده است. در ادامه این آموزش، با ما همراه باشید تا با مزایا و سپس استفاده عملی از این تکنیک‌ها آشنا شوید.

چرا باید داده‌ها را در مرورگر ذخیره کنیم؟

1. افزایش سرعت بارگذاری صفحات

با ذخیره داده‌های پرکاربرد (مانند تنظیمات، تصاویر کوچک، یا داده‌های فرم) در مرورگر، نیازی نیست هر بار این اطلاعات از سرور بارگذاری شوند.

2. ذخیره وضعیت کاربر

برای مثال، اطلاعات لاگین کاربر یا تنظیمات مانند زبان و تم انتخابی ذخیره می‌شوند تا کاربر مجبور نباشد هر بار تنظیمات را دوباره اعمال کند.

3. تحلیل و بررسی داده‌ها

از Web Storage برای ذخیره داده‌های آماری مانند رفتار کاربر استفاده می‌کنیم تا تجربه کاربری بهبود یابد.

4. برنامه‌های وب آفلاین

برخی اپلیکیشن‌های وب، مانند گوگل از Web Storage برای ذخیره موقت داده‌ها استفاده می‌کنند تا حتی در صورت قطع ارتباط اینترنتی، کاربر بتواند به داده‌ها دسترسی داشته باشد.

انواع روش های ذخیره‌سازی داده روی مرورگر کاربر

  1. Local Storage
  2. Session Storage
  3. Cookies

ذخیره‌سازی در Local Storage

Local Storage یکی از روش‌های ذخیره‌سازی داده‌ها در مرورگر است که به توسعه‌دهندگان امکان ذخیره داده‌ها به صورت دائمی و در سمت کاربر را می‌دهد.

ویژگی‌های Local Storage

  • اطلاعات ذخیره‌شده در Local Storage حتی پس از بسته شدن مرورگر یا خاموش شدن دستگاه همچنان باقی می‌مانند
  • داده‌های ذخیره‌شده در Local Storage فقط در مرورگر ذخیره می‌شوند و هنگام باز کردن سایت به سرور ارسال نمی‌شوند
  • ظرفیت ذخیره داده‌ها تا ۵ مگابایت (بسته به مرورگر) است

موارد استفاده

  • ذخیره تنظیمات کاربر مانند حالت تاریک، روشن یا زبان
  • ذخیره اطلاعات فرم‌ها به طور موقت برای جلوگیری از از دست رفتن داده‌ها
  • ذخیره داده‌های غیر حساس که نیاز به دسترسی سریع دارند

نحوه استفاده

ذخیره‌سازی داده

sessionStorage.setItem("داده‌ی موردنظر","کلید یا نام داده ها")

const user = {name:"Matin",phone:"09128455626"}
sessionStorage.setItem("user",JSON.stringify(user))

بازیابی داده

sessionStorage.getItem("کلید یا نام داده ها");

const stringUser = sessionStorage.getItem("user");
const objectUser = JSON.stringify(stringUser);

حذف داده

sessionStorage.removeItem("user")

پاکسازی تمام داده ها

sessionStorage.clear()

ذخیره‌سازی در Session Storage

Session Storage شباهت زیادی به Local Storage دارد، اما تفاوت‌هایی دارد که آن را برای ذخیره داده‌های موقت ایده‌آل می‌کند.

ویژگی‌های Session Storage

  • داده‌های ذخیره‌شده در Session Storage فقط تا زمانی که تب یا پنجره مرورگر باز است، باقی می‌مانند
  • داده‌های ذخیره‌شده در Session Storage فقط در مرورگر نگهداری می‌شوند و به سرور ارسال نمی‌شوند
  • مشابه Local Storage، معمولاً ظرفیت آن تا ۵ مگابایت است

موارد استفاده

  • ذخیره‌سازی اطلاعات موقت در یک تب مرورگر مانند اطلاعات فیلترهای جستجو
  • حفظ داده‌هایی که نیاز به دسترسی سریع دارند اما نباید بین تب‌های مختلف مرورگر به اشتراک گذاشته شوند
  • ذخیره داده‌های غیر حساس و موقتی که پس از بسته‌شدن تب نیازی به نگهداری آن‌ها نیست

نحوه استفاده

ذخیره‌سازی داده

sessionStorage.setItem("داده‌ی موردنظر","کلید یا نام داده ها")

const user = {name:"Matin",phone:"09128455626"}
sessionStorage.setItem("user",JSON.stringify(user))

بازیابی داده

sessionStorage.getItem("کلید یا نام داده ها");

const stringUser = sessionStorage.getItem("user");
const objectUser = JSON.stringify(stringUser);

حذف داده

sessionStorage.removeItem("user")

پاکسازی تمام داده ها

sessionStorage.clear()

کوکی‌ها فایل‌های کوچک متنی هستند که توسط وب‌سایت‌ها در مرورگر ذخیره می‌شوند و اطلاعاتی مثل تنظیمات کاربر، نشست‌ها، یا رفتار مرورگر را حفظ می‌کنند. داده‌های ذخیره‌شده در کوکی‌ها می‌توانند به سرور ارسال شوند.

  • برای ذخیره اطلاعات ورود کاربر یا وضعیت احراز هویت استفاده می‌شوند
  • امکان ذخیره‌سازی داده‌های حساس(باید اقدامات امنیتی رعایت شود)
  • برخلاف Local و Session Storage، کوکی‌ها می‌توانند همراه با هر درخواست HTTP به سرور ارسال شوند
  • ظرفیت تا چهار کیلوبایت
  • برای شخصی‌سازی تجربه کاربر یا تبلیغات هدفمند استفاده می‌شود
  • احراز هویت: نگهداری اطلاعات نشست کاربری برای تشخیص هویت در درخواست‌های بعدی
  • ذخیره تنظیمات مانند حالت تم سایت یا انتخاب‌های کاربر

ذخیره‌سازی داده

const user = {name:"Matin",phone:"09128455626"}
document.cookie = "user="+JSON.stringify(user)+"; expires=Fri, 31 Dec 2025 23:59:59 GMT; path=/";

بازیابی داده

// بازیابی تمام کوکی‌ها
const allCookies = document.cookie


// پیدا کردن کوکی با استفاده از نام آن
function getCookieValue(cookieName) {
const cookies = document.cookie.split('; ');

for (let cookie of cookies) {
const [name, value] = cookie.split('=');
if (name === cookieName) {
return decodeURIComponent(value);
}
}

return null; // مقدار کوکی 'user' یا null اگر پیدا نشود
}

const userCookie = getCookieValue('user');

پیش تر گفتیم که امکان ذخیره‌سازی داده‌های حساس در کوکی‌ها وجود دارد اما باید پروتکل های امنیتی زیر انجام شود:

  • HttpOnly
  • Secure
  • SameSite

*نکته : رعایت پروتکل های امنیتی از طرف کلاینت امکان پذیر نیست و باید از سمت سرور انجام شود.

رعایت پروتکل های امنیتی کوکی در سرور

در این بخش، از فریم‌ورک‌های Django و Node.js به منظور آموزش نحوه تنظیم کوکی‌های امن استفاده کرده‌ایم.

ست کردن کوکی در Django
from django.http import HttpResponse
def set_cookie_view(request):
response = HttpResponse("Cookie is set successfully!")
response.set_cookie(
key='user',
value='{"name":"Matin","phone":"09128455626"}', # مقدار کوکی
max_age=3600, # مدت زمان انقضا به ثانیه (1 ساعت)
httponly=True, # فقط از سرور قابل دسترسی باشد
secure=True, # فقط در HTTPS ارسال شود
samesite='Strict' # ارسال فقط در درخواست‌های اصلی سایت
)
return response
ست کردن کوکی در Node.js
const express = require('express');
const app = express();
app.get('/set-cookie', (req, res) => {
res.cookie('user', JSON.stringify({ name: 'Matin',phone:"09128455626" }), {
httpOnly: true, // فقط از طریق سرور قابل دسترسی
secure: true, // فقط روی HTTPS ارسال شود
sameSite: 'Strict', // فقط در دامنه اصلی ارسال شود
});
res.send('HttpOnly cookie set!');
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});

جمع بندی Web Storage

ویژگی‌هاLocal StorageSession StorageCookie
مدت ماندگاریدائمی مگر حذف شودموقت تا بسته‌شدن تبقابل تنظیم، وابسته انقضا
ظرفیتتا 5 مگابایتتا 5 مگابایتتا 4 کیلوبایت
موارد استفادهداده‌های طولانی مدتداده‌های موقتاحرازهویت
ارسال به سرورخیرخیربله
امنیتضعیفضعیفقابل تنظیم
دسترسی جاوااسکریپتبلهبلهقابل تنظیم

این جدول به شما کمک می‌کند تفاوت‌ها و کاربردهای هر نوع ذخیره‌سازی را سریع‌تر درک کنید، اگر سوالی دارید یا جایی از این آموزش نامفهوم بود برای ما تیکت ارسال کنید تا پاسخ شمارا بدهیم.

royalsite admin

نوشته شده توسط متین قاسمی مدیر آکادمی رویال سایت

Senior Frontend Developer

Senior Backend Developer

SEO Webmaster

Data Analyst

با بیش از سه سال تجربه طراحی سایت

instagram icon
telegram icon
sorush messenger icon
igap messenger icon
Linkedin platform