"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم تخزين الويب

فهم تخزين الويب

تم النشر بتاريخ 2024-11-07
تصفح:556

Understanding Web Storage

جدول المحتويات

  • ملفات تعريف الارتباط
  • التخزين المحلي
  • تخزين الجلسة
  • قاعدة البيانات المفهرسة
  • التحليل المقارن
  • الاعتبارات الأمنية
  • خاتمة

مقدمة

يعد تخزين البيانات جانبًا مهمًا لتطبيقات الويب الحديثة. سواء أكان الأمر يتعلق بحفظ تفضيلات المستخدم، أو تخزين البيانات مؤقتًا للاستخدام دون اتصال بالإنترنت، أو تتبع الجلسات، فإن كيفية إدارة البيانات في المتصفح يمكن أن تؤثر بشكل كبير على تجربة المستخدم. لدينا العديد من الخيارات المتاحة لنا لتخزين البيانات في المتصفحات، ولكل منها نقاط القوة وحالات الاستخدام الخاصة به. في هذه المقالة، سنستكشف خيارات التخزين المختلفة المتاحة في المتصفحات الحديثة، بما في ذلك التخزين المحلي، وتخزين الجلسة، وIndexedDB، وملفات تعريف الارتباط، ونقدم رؤى حول متى وكيف يتم استخدامها بفعالية.


ملفات تعريف الارتباط

ملفات تعريف الارتباط هي أجزاء صغيرة من البيانات المخزنة مباشرة في متصفح المستخدم. يتم استخدامها بشكل أساسي لتتبع الجلسات وتخزين تفضيلات المستخدم وإدارة المصادقة. على عكس التخزين المحلي وتخزين الجلسة، يتم إرسال ملفات تعريف الارتباط مع كل طلب HTTP إلى الخادم، مما يجعلها مناسبة للعمليات من جانب الخادم.

الميزات الرئيسية

  • السعة: محدودة بـ 4 كيلوبايت لكل ملف تعريف ارتباط.
  • الثبات: يمكن أن يكون لملفات تعريف الارتباط تاريخ انتهاء الصلاحية، مما يجعلها مستمرة أو تعتمد على الجلسة.
  • إمكانية الوصول: يمكن الوصول إليها من جانب العميل (عبر JavaScript) ومن جانب الخادم.

مثال للاستخدام:

document.cookie = "username=Mario; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/"; // Save data

const cookies = document.cookie; // Retrieve data

الايجابيات

  • يمكن استخدامها لتخزين البيانات من جانب العميل والخادم.
  • يدعم تواريخ انتهاء الصلاحية للتخزين المستمر.

سلبيات

  • سعة تخزين صغيرة.
  • يتم إرساله مع كل طلب HTTP، مما قد يؤثر على الأداء.

تُعد ملفات تعريف الارتباط مثالية لمهام مثل إدارة الجلسة، والتتبع، والتعامل مع كميات صغيرة من البيانات التي يجب الوصول إليها بواسطة الخادم.


التخزين المحلي

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

مثال للاستخدام:

localStorage.setItem('username', 'Mario'); // Save data

const username = localStorage.getItem('username'); // Retrieve data

localStorage.removeItem('username'); // Remove data

الميزات الرئيسية

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

الايجابيات

  • سهل الاستخدام مع أزواج المفاتيح ذات القيمة البسيطة.
  • تستمر البيانات عبر الجلسات.

سلبيات

  • سعة تخزين محدودة مقارنة بـ IndexedDB.
  • لا يوجد أمان مدمج؛ يمكن الوصول إلى البيانات من خلال أي برنامج نصي على الصفحة.

تخزين الجلسة

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

مثال للاستخدام:

sessionStorage.setItem('cart', 'coffee'); // Save data

const cartItem = sessionStorage.getItem('cart'); // Retrieve data

sessionStorage.removeItem('cart'); // Remove data

الميزات الرئيسية

  • السعة: مشابهة للتخزين المحلي، مع حوالي 5-10 ميغابايت من التخزين.
  • الثبات: تستمر البيانات حتى يتم إغلاق علامة تبويب المتصفح فقط، ومع ذلك، يمكنها البقاء على قيد الحياة عند إعادة تحميل الصفحة.
  • إمكانية الوصول: يمكن الوصول إليها عبر JavaScript من جانب العميل.

الايجابيات

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

سلبيات

  • يقتصر على مدة الجلسة، لذا فهو غير مناسب للتخزين طويل المدى.
  • مثل التخزين المحلي، يمكن الوصول إلى البيانات من خلال أي برنامج نصي على الصفحة، لذلك فهي تفتقر إلى الأمان المدمج.

يعد تخزين الجلسة مفيدًا بشكل خاص لاحتياجات تخزين البيانات المؤقتة خلال جلسة واحدة، مثل الحفاظ على الحالة أثناء جلسة المستخدم دون استمرار البيانات عبر الجلسات.


مفهرسةDB

IndexedDB عبارة عن واجهة برمجة تطبيقات منخفضة المستوى لتخزين كميات كبيرة من البيانات المنظمة، بما في ذلك الملفات والنقاط الكبيرة، في متصفح المستخدم. على عكس التخزين المحلي وتخزين الجلسة، فإن IndexedDB عبارة عن قاعدة بيانات كاملة تسمح بتخزين البيانات واسترجاعها بشكل أكثر تعقيدًا باستخدام الاستعلامات والمعاملات والفهارس.

الميزات الرئيسية

  • السعة: يمكن تخزين كميات كبيرة من البيانات، محدودة فقط بمساحة القرص الخاصة بالمستخدم.
  • البنية: يدعم تخزين البيانات المنظمة مع أزواج القيمة الرئيسية، وأنواع البيانات المعقدة، والهياكل الهرمية.
  • إمكانية الوصول: واجهة برمجة التطبيقات غير المتزامنة، مما يسمح بعمليات غير محظورة.

مثال للاستخدام:

const request = indexedDB.open('myDatabase', 1);

request.onupgradeneeded = function(event) {
  const db = event.target.result;
  const objectStore = db.createObjectStore('users', { keyPath: 'id' });
  objectStore.createIndex('name', 'name', { unique: false });
};

request.onsuccess = function(event) {
  const db = event.target.result;
  const transaction = db.transaction(['users'], 'readwrite');
  const objectStore = transaction.objectStore('users');
  objectStore.add({ id: 1, name: 'Mario', age: 30 });
};

الايجابيات

  • مثالية لتخزين البيانات المنظمة على نطاق واسع.
  • يدعم الاستعلامات والفهرسة المتقدمة.

سلبيات

  • أكثر تعقيدًا في التنفيذ مقارنة بالتخزين المحلي وتخزين الجلسة.
  • يمكن أن تؤدي الطبيعة غير المتزامنة إلى تعقيد التعليمات البرمجية إذا لم تتم إدارتها بشكل صحيح.

يعد IndexedDB مناسبًا للتطبيقات التي تحتاج إلى تخزين وإدارة كميات كبيرة من البيانات المنظمة، مثل التطبيقات غير المتصلة بالإنترنت، ومعالجة البيانات المعقدة، واحتياجات التخزين الأكثر تقدمًا من جانب العميل.


التحليل المقارن

يعتمد اختيار طريقة التخزين الصحيحة على الاحتياجات المحددة لتطبيق الويب الخاص بك. إليك مقارنة سريعة لمساعدتك على اتخاذ القرار:

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

الاعتبارات الأمنية

  • ملفات تعريف الارتباط: العلامات الآمنة وHttpOnly يمكن أن تعزز الأمان.
  • التخزين المحلي/الجلسة: يمكن الوصول إلى البيانات عبر JavaScript، مما يجعلها أقل أمانًا إذا لم يتم التعامل معها بشكل صحيح.
  • IndexedDB: آمن بشكل عام ولكنه لا يزال عرضة لهجمات XSS إذا لم تتم إدارته بشكل صحيح.

عند اختيار طريقة التخزين، ضع في اعتبارك كمية البيانات، والحاجة إلى الثبات، ومتطلبات إمكانية الوصول، والآثار الأمنية.


خاتمة

يعد فهم خيارات تخزين الويب المختلفة واستخدامها بشكل فعال أمرًا ضروريًا لبناء تطبيقات ويب قوية وسهلة الاستخدام. تخدم كل طريقة تخزين — التخزين المحلي، وتخزين الجلسة، وقاعدة البيانات المفهرسة، وملفات تعريف الارتباط — غرضًا فريدًا وتوفر مزايا مميزة. ومن خلال تحديد حل التخزين المناسب بناءً على احتياجات تطبيقك، يمكنك تحسين الأداء وتحسين تجربة المستخدم وضمان أمان البيانات.

سواء كنت بحاجة إلى تخزين بسيط ومستمر، أو تخزين مؤقت قائم على الجلسة، أو إدارة بيانات معقدة، أو الوصول إلى البيانات من جانب الخادم، فهناك خيار تخزين يناسب متطلباتك.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/mario130/understanding-web-storage-j0f?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3