جاري التحميل...

تخزين الويب HTML

تخزين الويب (HTML Web Storage) هو تقنية مدعومة من المتصفحات الحديثة تتيح لتطبيقات الويب تخزين البيانات محليًا داخل متصفح المستخدم باستخدام آليتي التخزين المحلي (localStorage) والتخزين الجلسي (sessionStorage). تخيل أنك تنظم مكتبة داخل بيتك (المتصفح) بدلًا من إرسال كل كتاب إلى مستودع بعيد (الخادم). هذا النوع من التخزين يمكّن التطبيقات من العمل بشكل أسرع وأكثر تخصيصًا، دون الحاجة إلى تكرار طلب البيانات من الخادم.
في موقع إخباري، يمكن استخدامه لتخزين المقالات المقروءة مسبقًا، أو حفظ وضع القراءة. في متجر إلكتروني، يُستخدم لتخزين سلة المشتريات مؤقتًا. في الصفحة الشخصية، يمكنه تذكر تفضيلات المستخدم مثل الوضع الليلي. في بوابة حكومية، يمكن أن يحتفظ ببيانات النماذج مؤقتًا لتقليل فقدان المعلومات.
سيتعلم القارئ في هذا الدليل كيف يعمل تخزين الويب HTML، متى يستخدمه، وكيفية تطبيقه في سياقات عملية. سنستعمل استعارات مثل بناء البيت (هيكل الصفحة)، وتزيين الغرف (تخصيص المحتوى)، وكتابة الرسائل (تخزين القيم)، وتنظيم المكتبة (هيكلة البيانات) لتبسيط المفاهيم المعقدة بشكل عملي وعميق.

مثال أساسي

html
HTML Code
<!DOCTYPE html>
<html>
<body>

<button onclick="localStorage.setItem('visitor', 'Ali')">احفظ الاسم</button>
<button onclick="alert(localStorage.getItem('visitor'))">اعرض الاسم</button>

</body>
</html>

في هذا المثال البسيط، نُظهر كيف يمكن استخدام التخزين المحلي (localStorage) لتخزين قيمة واسترجاعها من متصفح المستخدم.

  • localStorage.setItem('visitor', 'Ali'): هذا السطر يخزن القيمة "Ali" في المتصفح تحت المفتاح "visitor". كأنك تضع ورقة باسم "Ali" داخل درج يحمل بطاقة "visitor".
  • localStorage.getItem('visitor'): يسترجع القيمة المرتبطة بالمفتاح "visitor". إذا كانت موجودة، يعرضها باستخدام alert.
    زر "احفظ الاسم" يكتب البيانات، وزر "اعرض الاسم" يقرأها. هذا التفاعل لا يتطلب خادم أو قاعدة بيانات. التخزين يتم بالكامل داخل جهاز المستخدم.
    من الأسئلة الشائعة:

  • هل تُخزّن البيانات بعد إغلاق المتصفح؟ نعم، التخزين المحلي يدوم حتى يتم حذفه يدويًا.

  • هل يمكن تخزين الكائنات أو المصفوفات؟ نعم، ولكن يجب تحويلها إلى نص باستخدام JSON.stringify() ثم استرجاعها بـ JSON.parse().
    يُستخدم هذا النوع من التخزين لتخصيص تجربة المستخدم وتحسين الأداء في تطبيقات مثل الأخبار، المتاجر الإلكترونية، والبوابات التفاعلية. إنه يوفر طريقة فعّالة لتنظيم معلومات المستخدم كما تنظم كتبك في مكتبتك.

مثال عملي

html
HTML Code
<!DOCTYPE html>
<html>
<body>

<label for="language">اختر اللغة:</label>
<select id="language">
<option value="ar">العربية</option>
<option value="en">English</option>
</select>

<script>
const lang = localStorage.getItem('siteLang');
if (lang) document.documentElement.lang = lang;

document.getElementById('language').addEventListener('change', e => {
localStorage.setItem('siteLang', e.target.value);
document.documentElement.lang = e.target.value;
});
</script>

</body>
</html>

أفضل الممارسات والأخطاء الشائعة
أفضل الممارسات:

  1. استخدم مفاتيح وصفية: أسماء مثل userTheme أو cartItems تسهل الفهم والصيانة.
  2. تحقق من دعم التخزين: ليس كل المتصفحات تدعمه دائمًا (مثل التصفح الخفي)، استخدم فحصًا مثل if (typeof(Storage) !== "undefined").
  3. حافظ على البنية الدلالية (Semantic HTML): مثل استخدام <label> مع <select> لزيادة الوصولية.
  4. نظف البيانات القديمة: قم بإزالة القيم غير الضرورية لتجنب استهلاك الذاكرة.
    أخطاء شائعة:

  5. تخزين بيانات حساسة: لا تخزن كلمات مرور أو رموز دخول؛ التخزين غير مشفر.

  6. نسيان تحويل البيانات: يجب استخدام JSON.stringify() للكائنات؛ وإلا فستحصل على [object Object].
  7. افتراض التوفر الدائم: التخزين قد يفشل بسبب الامتلاء أو سياسات المتصفح.
  8. التداخل في المفاتيح: تجنب تكرار أسماء المفاتيح لتفادي فقدان البيانات.
    نصائح تصحيح الأخطاء:
  • استخدم أدوات المطور (Developer Tools) > Application > Storage لفحص المحتوى.
  • استعمل try-catch عند القراءة/الكتابة لمنع الأعطال المفاجئة.
    توصيات عملية:

  • احتفظ بقاعدة بيانات للمفاتيح المستخدمة ووظائفها.

  • اجمع بين تخزين الويب وتفاعلات CSS/JS لإنشاء تجربة ديناميكية سلسة.

📊 مرجع سريع

Property/Method Description Example
localStorage.setItem() تخزين قيمة باستخدام مفتاح localStorage.setItem('user', 'Ali')
localStorage.getItem() قراءة قيمة حسب المفتاح localStorage.getItem('user')
localStorage.removeItem() حذف قيمة ومفتاح localStorage.removeItem('user')
localStorage.clear() مسح جميع البيانات المخزنة localStorage.clear()
sessionStorage.setItem() تخزين بيانات للجلسة الحالية فقط sessionStorage.setItem('mode', 'dark')
sessionStorage.getItem() قراءة من الجلسة فقط sessionStorage.getItem('mode')

الملخص والخطوات القادمة
في هذا الدرس، تعرفت على تخزين الويب (HTML Web Storage)، وتعلمت الفرق بين التخزين المحلي (localStorage) والتخزين الجلسي (sessionStorage)، وكيفية استخدام كليهما لتخزين بيانات المستخدم محليًا في المتصفح. يمكنك الآن بناء تطبيقات أسرع وأكثر تخصيصًا.
يتكامل تخزين الويب بشكل ممتاز مع CSS (لتغيير السمات بناءً على التفضيلات المخزنة)، ومع JavaScript (للتفاعل مع المحتوى وتحديثه ديناميكيًا). هذا يعزز تجربة المستخدم ويقلل الاعتماد على الخادم.
الموضوعات التالية المقترحة:

  • استخدام JSON.stringify() و JSON.parse()
  • الفرق بين Web Storage و Cookies
  • تخزين البيانات الكبيرة باستخدام IndexedDB
  • استخدام التخزين في تطبيقات React أو Vue
    نصيحة عملية:
    ابدأ باستخدام التخزين لتخصيص الواجهة أو حفظ تفضيلات اللغة، ثم طوّر استخدامك تدريجيًا نحو سيناريوهات أكثر تعقيدًا كالتخزين المؤقت لسلة الشراء أو نماذج المعاملات.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

اختبر فهمك لهذا الموضوع بأسئلة عملية.

3
الأسئلة
🎯
70%
للنجاح
♾️
الوقت
🔄
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى