sessionStorage وIndexedDB واختيار واجهة API المناسبة
قارنوا خيارات تخزين المتصفح من حيث الاستمرارية والسعة والوصول المتزامن مقابل غير المتزامن.
sessionStorage وIndexedDB واختيار واجهة API المناسبة درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
يشترك sessionStorage في واجهة API
يوفر sessionStorage الأساليب نفسها تمامًا التي يوفرها localStorage، لكن مدة بقائه مرتبطة بعلامة التبويب. وعند إغلاق علامة التبويب أو النافذة، تُمسح بياناته تلقائيًا.
كما أنه معزول لكل علامة تبويب، لذا لا تتشارك علامتا تبويب بيانات sessionStorage.
حالة استخدام نموذج متعدد الخطوات
يتألق sessionStorage عند استخدام معالج متعدد الخطوات تريدون فيه الحفاظ على التقدم عبر عمليات إعادة التحميل خلال الجلسة، ثم التخلص منه عند إغلاق علامة التبويب.
يمكن للمستخدم إعادة تحميل الصفحة أثناء ملء النموذج دون فقدان الإدخالات، ومع ذلك لا يبقى شيء بعد الانتهاء أو المغادرة.
IndexedDB: غير متزامنة وكبيرة
إن IndexedDB قاعدة بيانات غير متزامنة ومعاملاتية مضمّنة في المتصفح. ويمكنها تخزين بيانات أكثر بكثير من حد localStorage البالغ 5MB، كما تتعامل مع الكائنات المنظمة والمصفوفات وحتى البيانات الثنائية.
ولأنها غير متزامنة، فإنها لا تحجب الخيط الرئيسي كما يفعل localStorage.
غلاف Promise لـ IDB-Keyval
واجهة IndexedDB الخام مطولة وتعتمد على الأحداث، لذلك تغلفها مكتبات مثل idb-keyval في دوال بسيطة قائمة على Promise، مثل get وset وdel.
ويمنحكم ذلك سهولة استخدام شبيهة بـ localStorage مع سعة IndexedDB وسلوكها غير المتزامن.
IndexedDB للبيانات الثنائية الكبيرة
نظرًا إلى قدرة IndexedDB على تخزين قيم Blob وArrayBuffer، فهي مثالية لتخزين الصور أو المقاطع الصوتية أو الملفات التي تم تنزيلها أو الأصول المتاحة دون اتصال.
كانت هذه البيانات ستتجاوز حدود localStorage بسرعة، وكان سيتعين تحويلها إلى سلاسل نصية، وهو ما تتجنبه IndexedDB.
واجهة Cache لاستجابات HTTP
تخزن واجهة Cache، التي تُستخدم غالبًا مع service workers، كائنات Response الكاملة وفق مفاتيح تمثل الطلبات. وقد صُممت خصيصًا للتخزين المؤقت لاستجابات الشبكة وفق نهج عدم الاتصال أولًا.
استخدموها لتقديم الأصول واستجابات API دون الوصول إلى الشبكة عند عدم الاتصال.
مقارنة الاستمرارية
يستمر localStorage بشكل دائم حتى مسحه، ويستمر sessionStorage خلال جلسة علامة التبويب فقط، وتستمر IndexedDB بشكل دائم، بينما تمتلك ملفات تعريف الارتباط مدة انتهاء قابلة للضبط عبر سماتها.
تجنب مطابقة مدة البيانات المطلوبة مع مخزن البيانات المناسب المفاجآت المتعلقة بموعد اختفاء البيانات.
مقارنة السعة
تقتصر سعة localStorage وsessionStorage على نحو 5 ميغابايت، وملفات تعريف الارتباط على نحو 4 كيلوبايت لكل ملف، بينما يمكن لـ IndexedDB استخدام مئات الميغابايت أو أكثر، بحسب الجهاز والمتصفح.
بالنسبة إلى أي بيانات كبيرة الحجم، يُعد IndexedDB خيار المتصفح العملي الوحيد.
المتزامن مقابل غير المتزامن
تعمل localStorage وsessionStorage وملفات تعريف الارتباط بشكل متزامن، فتحجب الخيط الرئيسي أثناء الوصول إليها. أما IndexedDB وCache API فتعملان بشكل غير متزامن وتعتمدان على Promise.
يُبقي الوصول غير المتزامن واجهة المستخدم متجاوبة حتى عند قراءة كميات كبيرة من البيانات أو كتابتها.
الاختيار حسب حالة الاستخدام
استخدم ملفات تعريف الارتباط httpOnly لرموز المصادقة حتى لا تتمكن النصوص البرمجية من قراءتها، واستخدم localStorage للتفضيلات الصغيرة الدائمة، وIndexedDB للملفات الكبيرة والبيانات المعقدة المتاحة دون اتصال، وsessionStorage للمسودات قصيرة الأجل داخل علامة تبويب.
طابق مخزن البيانات مع حساسية البيانات وحجمها وعمرها.
تجميع العناصر
لا توجد واجهة تخزين واحدة هي الأفضل دائمًا؛ فلكل واجهة موازنة مختلفة بين السعة والاستمرارية وسلوك التزامن والأمان. تتيح لك معرفة هذه الاختلافات الاختيار عن قصد.
يستخدم التطبيق المعتاد عدة خيارات: ملفات تعريف الارتباط للمصادقة، وlocalStorage للتفضيلات، وIndexedDB للأصول المتاحة دون اتصال.
اختبار سريع
اختبر مدى فهمك لخيارات التخزين.
مراجعة
قارنت بين sessionStorage وlocalStorage وIndexedDB وملفات تعريف الارتباط وCache API من حيث الاستمرارية والسعة وسلوك التزامن والأمان.
وتعلمت كيفية الاختيار حسب حالة الاستخدام: ملفات تعريف الارتباط للمصادقة، وlocalStorage للتفضيلات الصغيرة، وIndexedDB للبيانات الكبيرة أو المعقدة، وsessionStorage للمسودات الخاصة بعلامة تبويب.
الأسئلة الشائعة
هل درس «sessionStorage وIndexedDB واختيار واجهة API المناسبة» مجاني؟
نعم — نص درس «sessionStorage وIndexedDB واختيار واجهة API المناسبة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «sessionStorage وIndexedDB واختيار واجهة API المناسبة»؟
قارنوا خيارات تخزين المتصفح من حيث الاستمرارية والسعة والوصول المتزامن مقابل غير المتزامن. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «sessionStorage وIndexedDB واختيار واجهة API المناسبة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة localStorage والكتابة فيه في React
- مزامنة الحالة مع localStorage
- التعامل مع أحداث التخزين بين علامات التبويب
- sessionStorage وIndexedDB واختيار واجهة API المناسبة