0Pricing
HTML Academy · درس

localStorage في مقابل sessionStorage

فهم مدة التخزين ونطاق كل نوع من أنواع التخزين

localStorage في مقابل sessionStorage درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.

نظرة عامة على Web Storage API

يوفّر Web Storage API مخزنين من نوع المفتاح والقيمة على جانب العميل: localStorage (يستمر بين الجلسات) وsessionStorage (يُمسح عند إغلاق علامة التبويب). يخزّن كلاهما قيمًا نصية، ويمكن الوصول إليهما بشكل متزامن عبر JavaScript ضمن الأصل نفسه.

استمرارية localStorage

تستمر البيانات في localStorage حتى يمسحها صراحةً الكود أو المستخدم أو عملية حذف بيانات المتصفح. وتبقى هذه البيانات بعد إعادة تشغيل المتصفح وتحديث الصفحة وإغلاق علامة التبويب. وتبلغ السعة عادةً بين 5 و10 ميجابايت لكل أصل، وفقًا للمتصفح.

نطاق sessionStorage

يقتصر sessionStorage على علامة التبويب الحالية وجلسة التصفح الحالية. وتبقى البيانات بعد تحديث الصفحة ضمن علامة التبويب نفسها، لكنها تُمسح عند إغلاق علامة التبويب. وتملك علامتا تبويب للموقع نفسه sessionStorage منفصلًا ومعزولًا، ولا تتشاركان البيانات.

تشابه واجهة API

يشترك كلا المخزنين في واجهة API نفسها: setItem(key, value) وgetItem(key) وremoveItem(key) وclear()، إضافةً إلى الخاصية length. يعمل الكود نفسه مع كليهما؛ فما عليك سوى استبدال localStorage بـ sessionStorage أو العكس.

الاختيار بينهما

استخدم localStorage من أجل: تفضيلات المستخدم مثل السمة واللغة، واستجابات API المخزنة مؤقتًا، ووظيفة تذكّر المستخدم. واستخدم sessionStorage من أجل: حالة خطوات المعالج أو النموذج، وسلة التسوق المؤقتة قبل إتمام الشراء، والبيانات التي لا ينبغي أن تستمر بين الزيارات لأسباب تتعلق بالخصوصية.

تقييد الأصل نفسه

يقتصر كلا المخزنين بدقة على الأصل نفسه (البروتوكول + المضيف + المنفذ). لا يستطيع https://example.com قراءة localStorage الذي عيّنه http://example.com. وهذا يمثل حدًا أمنيًا؛ كما تُعد النطاقات الفرعية أصولًا منفصلة ما لم تتم معالجة document.domain (وهو أمر مهمل).

سعة التخزين

يضع معظم المتصفحات حدًا يقارب 5 ميجابايت لكل أصل لكلا المخزنين. ويؤدي تجاوز هذا الحد إلى طرح QuotaExceededError. أما احتياجات تخزين كميات كبيرة من البيانات فتتطلب IndexedDB، الذي يدعم جيجابايتات من البيانات المهيكلة. صُمم Web Storage لأزواج المفتاح والقيمة الصغيرة، وليس للبيانات الثنائية أو مجموعات البيانات الكبيرة.

الطبيعة المتزامنة

تتم عمليات القراءة والكتابة في Web Storage بشكل متزامن، مما يحجب سلسلة التعليمات الرئيسية. وقد يؤدي ذلك إلى التقطّع عند قراءة كميات كبيرة من البيانات أو كتابتها. يُفضّل استخدام IndexedDB لعمليات البيانات الكبيرة المتكررة. اجعل قيم Web Storage صغيرة ونادرة لتجنب مشكلات الأداء.

نمط التسلسل

لا يخزّن Web Storage إلا السلاسل النصية. حوّل الكائنات إلى تسلسل باستخدام JSON.stringify()، وأعد تحويلها باستخدام JSON.parse(). تعامل مع حالات فشل التحليل: try { return JSON.parse(stored) } catch { return defaultValue }. تؤدي القيم التالفة أو غير المتوافقة مع JSON في التخزين إلى أخطاء في التحليل.

التخزين في الوضع الخاص أو المتخفي

يُمسح localStorage في الوضع الخاص أو المتخفي عند إغلاق جميع النوافذ الخاصة، وبذلك يتصرف مثل sessionStorage. يجب أن يتعامل الكود الذي يعتمد على localStorage لحفظ حالة المصادقة مع احتمال مسحه بشكل غير متوقع.

قيود الجهات الخارجية

تفرض المتصفحات قيودًا متزايدة على الوصول إلى تخزين الجهات الخارجية. ولا يستطيع iframe من third-party.com ضمن first-party.com الوصول إلى localStorage الخاص بـ third-party.com. ويقسّم ITP في Safari وEnhanced Tracking Protection في Firefox التخزين إلى أقسام، بينما لا يتأثر الاستخدام من الطرف الأول.

اختبار المعرفة

متى يتم مسح sessionStorage؟

ملخص

يستمر localStorage إلى أجل غير محدد حتى يُمسح برمجيًا أو بواسطة المستخدم، بينما يُمسح sessionStorage عند إغلاق علامة التبويب. يقتصر كلاهما على الأصل نفسه، وهما مخزنا مفتاح وقيمة نصيين ومتزامنين بسعة تقارب 5 ميجابايت. استخدم localStorage للتفضيلات والحالة المستمرة، واستخدم sessionStorage للحالة المؤقتة الخاصة بالجلسة التي لا ينبغي أن تبقى بعد إغلاق علامة التبويب.

الأسئلة الشائعة

هل درس «localStorage في مقابل sessionStorage» مجاني؟

نعم — نص درس «localStorage في مقابل sessionStorage» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.

ماذا ستتعلم في «localStorage في مقابل sessionStorage»؟

فهم مدة التخزين ونطاق كل نوع من أنواع التخزين تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟

لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «localStorage في مقابل sessionStorage»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟

نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. localStorage في مقابل sessionStorage
  2. الحصول على العناصر وتعيينها وإزالتها
  3. الاستماع إلى أحداث التخزين
  4. الأمان: ما يجب عدم تخزينه مطلقًا
← العودة إلى HTML Academy