التخزين الدائم

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

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

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

تتوفر ميزة التخزين الدائمة في العديد من المتصفحات الحديثة.

التوافق مع المتصفح

  • 55
  • 79
  • 57
  • 15.2

المصدر

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

التحقّق مما إذا كانت مساحة التخزين على موقعك الإلكتروني ثابتة

يمكنك استخدام JavaScript لتحديد ما إذا كانت مساحة التخزين على موقعك الإلكتروني قد تم تصنيفها بأنّها ثابتة. يؤدي طلب الرقم navigator.storage.persisted() إلى عرض وعد يتم حله باستخدام قيمة منطقية، ما يشير إلى ما إذا تم وضع علامة على مساحة التخزين على أنّها مستمرة.

// Check if site's storage has been marked as persistent
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persisted();
  console.log(`Persisted storage granted: ${isPersisted}`);
}

متى يجب أن أطلب مساحة تخزين دائمة؟

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

طلب مساحة تخزين دائمة

لطلب مساحة تخزين دائمة لبيانات موقعك الإلكتروني، يمكنك الاتصال بالرقم navigator.storage.persist(). ويعرض وعدًا يتم حله باستخدام قيمة منطقية، ما يشير إلى ما إذا تم منح إذن التخزين الدائم أم لا.

// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persist();
  console.log(`Persisted storage granted: ${isPersisted}`);
}

كيف يتم منح الإذن؟

يتم التعامل مع التخزين الدائم على أنه إذن. تستخدم المتصفحات عوامل مختلفة لتحديد ما إذا كانت ستمنح أذونات تخزين دائمة أم لا.

Chrome والمتصفحات الأخرى التي تستند إلى Chromium

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

تشمل الإرشادات لتحديد ما إذا كان الموقع مهمًا:

  • ما مستوى التفاعل مع الموقع الإلكتروني؟
  • هل تم تثبيت الموقع أو وضع إشارة عليه؟
  • هل حصل الموقع الإلكتروني على إذن لعرض الإشعارات؟

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

Firefox

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

نافذة منبثقة يعرضها Firefox عندما يطلب موقع إلكتروني مساحة تخزين دائمة.
نافذة منبثقة يعرضها متصفّح Firefox عندما يطلب موقع إلكتروني مساحة تخزين دائمة.

ما هي وحدة التخزين المحمية بمساحة تخزين دائمة؟

إذا تم منح إذن مساحة التخزين الدائمة، لن يطرد المتصفّح البيانات المخزنة في:

  • واجهة برمجة تطبيقات ذاكرة التخزين المؤقت
  • بسكويت
  • مساحة تخزين DOM (مساحة التخزين المحلية)
  • File System API (نظام ملفات يوفّره المتصفّح ومتوفّر في وضع الحماية)
  • IndexedDB
  • مشغِّلو الخدمات
  • ذاكرة التخزين المؤقت للتطبيق (متوقّفة نهائيًا، يجب عدم استخدامها)
  • WebSQL (متوقف نهائيًا، يجب عدم استخدامه)

كيفية إيقاف مساحة التخزين الدائمة

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

الخلاصة

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

شكرًا

شكر خاص لفيكتور كوستان وجو ميدلي لمراجعة هذه المقالة. شكرًا لكريس ويلسون الذي كتب النسخة الأصلية من هذه المقالة التي ظهرت لأول مرة على WebFundamentals.

صورة رئيسية من تصوير "أومبرتو" على صفحة UnLaunch