ذخیره‌سازی وب در HTML

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو

ذخیره سازی وب؛ بهتر از cookie هاست.[۱]

ذخیره سازی وب HTML چیست؟

با ذخیره سازی وب، برنامه‌های کاربردی وب می‌توانند داده‌ها را بطور محلی در مرورگر کاربر ذخیره کنند.

پیش از HTML5، داده‌های برنامه کاربردی باید در cookieها ذخیره می‌شد، در همهٔ درخواست‌های کاربر گنجانده می‌شد. ذخیره سازی وب امن تر است و حجم زیادی از داده‌ها را می‌توان بدون تأثیر برروی عملکرد وب‌سایت، بطور محلی ذخیره کرد.

برخلاف cookieها، محدودیت ذخیره سازی بسیار بزرگتر است (حداقل 5MB) و اطلاعات هرگز به سرور منتقل نمی‌شود.

ذخیره سازی وب به ازاء مبدأ است (به ازاء دامنه و پروتکل). همه صفحات، از یک مبدأ را می‌توان ذخیره کرد و به همان داده‌ها دسترسی داشت.

پشتیبانی مرورگر

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

API Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
ذخیره‌سازی وب ۴٫۰ ۸٫۰ ۳٫۵ ۴٫۰ ۱۱٫۵


اشیاء ذخیره سازی وب در HTML

ذخیره سازی وب HTML دو شیء را برای ذخیره کردن داده‌ها در کلاینت (Client) فراهم می‌کند:

  • window.localStorage - داده‌های بدون انقضا را ذخیره می‌کند
  • window.sessionStorage - داده‌ها را برای یک session (به فارسی: جلسه) ذخیره می‌کند (داده‌ها با بسته شدن مرورگر از بین می‌روند)

پیش از استفاده از ذخیره سازی وب، پشتیبانی مرورگر از localStorage و sessionStorage را بررسی کنید:

if (typeof(Storage) !== "undefined") {
  // Code for localStorage/sessionStorage.
} else {
  // Sorry! No Web Storage support..
}

شیء localStorage

شیء localStorage داده‌های بدون تاریخ انقضا را ذخیره می‌کند. این داده‌ها با بسته شدن مرورگر حذف نمی‌شوند، و تا هفته یا سال بعد هم موجود هستند.

مثال

// Store
localStorage.setItem("lastname", "Smith");

// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");

مشاهدهٔ نتیجه


توضیح مثال:

  • یک جفت نام / مقدار localStorage با name="lastname" و value="Smith" ایجاد کنید
  • مقدار "lastname" را بازیابی کرده و در عنصر با id="result" وارد کنید

مثال بالا را می‌توان اینگونه نیز نوشت:

// Store
localStorage.lastname = "Smith";
// Retrieve
document.getElementById("result").innerHTML = localStorage.lastname;

نحو حذف آیتم "lastname" localStorage به شکل زیر است:

localStorage.removeItem("lastname");

توجه: جفت‌های نام/مقدار همیشه بعنوان رشته ذخیره می‌شوند. به یاد داشته باشید که هنگام نیاز آنها را فرمت دیگری تبدیل کنید!

مثال زیر تعداد دفعات کلیک کردن کاربر برروی یک کلید را شمارش می‌کند. در این کد مقدار رشته به عدد تبدیل شده تا بتوان شمارنده را افزایش داد:

مثال

if (localStorage.clickcount) {
  localStorage.clickcount = Number(localStorage.clickcount) + 1;
} else {
  localStorage.clickcount = ۱;
}
document.getElementById("result").innerHTML = "You have clicked the button " +
localStorage.clickcount + " time(s).";

مشاهدهٔ نتیجه


شیء sessionStorage

شیء sessionStorage برابر با شیء localStorage است، به جز اینکه فقط داده‌های یک session را ذخیره می‌کند. داده‌ها هنگامی که کاربر تب خاصی در مرورگر را ببندد حذف می‌شوند.

مثال زیر تعداد دفعاتی که کاربر در session فعلی برروی یک کلید کلیک کرده را شمارش می‌کند:

مثال

if (sessionStorage.clickcount) {
  sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1;
} else {
  sessionStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "You have clicked the button " +
sessionStorage.clickcount + " time(s) in this session.";

مشاهدهٔ نتیجه

منابع آموزشی