يمكن أن يساعد التخزين الثابت في حماية البيانات المهمة من الإخلاء وتقليل فرصة فقدان البيانات.
عندما تواجه مشكلة في ضغط مساحة التخزين مثل انخفاض مساحة القرص، تتخلص المتصفحات عادةً من البيانات، بما في ذلك البيانات من Cache API وIndexedDB، من المصدر الأقل استخدامًا مؤخرًا. وقد يتسبّب ذلك في فقدان البيانات إذا لم يقم التطبيق بمزامنة البيانات مع الخادم، كما قد يؤدي إلى تقليل موثوقية التطبيق عن طريق إزالة الموارد المطلوبة لكي يعمل التطبيق، ويؤدي كلاهما إلى تقديم تجارب سلبية للمستخدم.
لحسن الحظ، أظهرت الأبحاث التي أجراها فريق Chrome أن Chrome نادرًا ما يتم محو البيانات تلقائيًا بواسطة Chrome. من الشائع جدًا أن يقوم المستخدمون بمسح التخزين يدويًا. وبالتالي، إذا كان المستخدم يزور موقعك بانتظام، تكون هناك احتمالات ضئيلة، حيث سيتم إغلاق بياناتك. لمنع المتصفّح من حذف بياناتك، يمكنك طلب وضع علامة "استمرارية" على مساحة التخزين الكاملة في موقعك الإلكتروني.
التخزين الثابت متوافق في العديد من المتصفّحات الحديثة.
لمزيد من المعلومات حول عملية إخلاء مساحة التخزين ومقدار التخزين الذي يمكنك تخزينه وكيفية التعامل مع القيود المفروضة على الحصة، يمكنك الاطّلاع على مقالة مساحة التخزين للويب.
التحقّق مما إذا تم وضع علامة على مساحة التخزين على موقعك الإلكتروني كثابتة
يمكنك استخدام 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 عندما يطلب أحد المواقع مساحة تخزين دائمة.](https://web.dev/static/articles/persistent-storage/image/a-popup-shown-firefox-a-c1a6b170da587.jpg?authuser=7&hl=ar)
ما هي مساحة التخزين المحمية بمساحة تخزين دائمة؟
في حال منح إذن التخزين الدائم، لن يستبعد المتصفِّح البيانات المخزَّنة في:
- واجهة برمجة تطبيقات ذاكرة التخزين المؤقت
- بسكويت
- تخزين DOM (تخزين محلي)
- File System API (نظام الملفات الذي يوفّره المتصفّح ووضع الحماية)
- IndexedDB
- مشغِّلو الخدمات
- ذاكرة التخزين المؤقت للتطبيق (متوقّفة نهائيًا، يجب عدم استخدامها)
- WebSQL (تم إيقافها نهائيًا ويجب عدم استخدامها)
كيفية إيقاف مساحة التخزين الدائمة
وفي الوقت الحالي، ليست هناك طريقة برمجية لإخبار المتصفح بأنك لم تعد بحاجة إلى مساحة تخزين دائمة.
الخلاصة
توضح الأبحاث التي أجرتها فريق Chrome أنه على الرغم من إمكانية ذلك، إلا أنه نادرًا ما يتم محو البيانات المخزنة تلقائيًا بواسطة Chrome. لحماية البيانات المهمة التي قد لا يتم تخزينها في السحابة الإلكترونية أو ستؤدي إلى فقدان قدر كبير من البيانات، يمكن أن تكون التخزين المستمر أداة مفيدة لضمان عدم إزالة البيانات بواسطة المتصفح عندما يواجه الجهاز المحلي ضغطًا في مساحة التخزين. وتذكر أن تطلب مساحة تخزين دائمة فقط عندما يكون المستخدم على الأرجح يطلبها.
شكرًا
شكر خاص لكل من "فيكتور كوستان" و"جو ميديلي" على مراجعة هذه المقالة. نشكر "كريس ويلسون" الذي كتب النسخة الأصلية من هذه المقالة، والتي ظهرت لأول مرة على WebFundamentals.
صورة رئيسية من تصميم "أومبرتو" على قناة Unpush