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

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

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

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

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

Browser Support

  • Chrome: 55.
  • Edge: 79.
  • Firefox: 57.
  • Safari: 15.2.

Source

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

التحقّق ممّا إذا تم وضع علامة على مساحة تخزين موقعك الإلكتروني بأنّها دائمة

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

// 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 عندما يطلب موقع إلكتروني مساحة تخزين دائمة.

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

في حال منح إذن مساحة التخزين الثابتة، لن يزيل المتصفّح البيانات المخزّنة في:

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

كيفية إيقاف سعة التخزين الثابتة

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

الخاتمة

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

شكرًا

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