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

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

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

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

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

دعم المتصفح

  • Chrome: 55.
  • الحافة: 79.
  • Firefox: 57.
  • Safari: الإصدار 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.

صورة رئيسية من تصميم "أومبرتو" على قناة Unpush