إدارة التخزين بلا اتصال بتنسيق HTML5

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

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

المحتويات

  1. أنواع مساحة التخزين
    1. مؤقتة
    2. الثابت
    3. غير محدودة
    4. مقارنة أنواع مساحة التخزين
  2. إدارة حصّتك
    1. استخدام مساحة التخزين في طلب البحث ومدى توفّرها
    2. طلب سعة تخزين إضافية
    3. إعادة ضبط الحصة للاختبار
  3. مرجع واجهة برمجة التطبيقات
    1. الثابت
    2. نظرة عامة على الطريقة
    3. الطُرق
  4. التطوير المستقبلي

أنواع مساحة التخزين

في Google Chrome، يمكن طلب ثلاثة أنواع من مساحة التخزين:

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

التخزين المؤقت

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

مشاركة المسبح

تتم مشاركة مساحة التخزين المؤقتة بين جميع تطبيقات الويب التي تعمل في المتصفّح. يمكن أن تصل مساحة التخزين المجمّعة المشتركة إلى ثلث مساحة القرص المتاحة. مساحة التخزين التي تستخدمها التطبيقات حاليًا أن يتم تضمينها في حساب التجميع المشترك؛ أي أن العملية الحسابية تستند إلى (available storage space + storage being used by apps) * .333

يمكن أن يحتوي كل تطبيق على ما يصل إلى 20% من مساحة التخزين المُجمَّعة المشتركة. على سبيل المثال، إذا كان إجمالي مساحة القرص المتاحة 60 غيغابايت، ومساحة التخزين المجمّعة المشتركة 20 غيغابايت، ويمكن أن يصل حجم التطبيق إلى 4 غيغابايت. ويتم حساب ذلك من 20% (ما يصل إلى 4 غيغابايت) من إجمالي 1/3 (حتى 20 غيغابايت) من مساحة القرص المتاحة (60 غيغابايت).

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

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

نفدت مساحة التخزين

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

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

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

التخزين الثابت

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

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

مساحة تخزين غير محدودة

مساحة التخزين غير المحدودة تشبه مساحة التخزين الثابتة، ولكنّها لا تتوفّر إلا لتطبيقات Chrome الإضافات (ملفات .crx). حجم مساحة التخزين غير المحدودة مقيَّد فقط بمدى توفُّر المساحة في القرص الصلب للمستخدم. يمكنك طلب إذن "unlimitedStorage" في ملف البيان تطبيق أو إضافة عند التثبيت، يتم إعلام المستخدم بالأذونات المطلوبة من خلال التطبيق أو الإضافة. من خلال متابعة التثبيت، يمنح المستخدم ضمنيًا إذنًا جميع الصفحات التي تم إدراج عناوين URL الخاصة بها في ملف exit.json.

لمزيد من المعلومات، اطّلِع على أدلة المطوِّرين ذات الصلة للتطبيقات والإضافات.

مقارنة أنواع مساحة التخزين

ويوضّح الجدول التالي الاختلافات بين أنواع التخزين الثلاثة.

 التخزين المؤقتالتخزين الثابتمساحة تخزين غير محدودة
الوصف الأساسي

مساحة تخزين عابرة متاحة لأي تطبيق ويب

وهي تلقائية ولا تحتاج إلى طلب.

مساحة التخزين الدائمة التي يجب طلبها من خلال واجهة برمجة تطبيقات إدارة الحصص ومنحها المستخدمين

التخزين الدائم لإضافات Chrome وتطبيقاته.

يتم ضبطها في ملف البيان ويجب أن يمنحها المستخدمون.

مدى التوفّر

جميع تطبيقات الويب.

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

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

يمكنك طلب إذن unlimitedStorage في ملف البيان للتطبيق أو الإضافة.
تجربة المستخدم عند الاستخدام الأوللا يظهر للمستخدم. التطبيق يعمل فقط.

يعرض Chrome شريط معلومات يطلب من المستخدم قبول طلب التخزين أو رفضه.

ولكن إذا كان مقدار الحصة التي تطلبها أقل من التخصيص الحالي للتطبيق، لن يتم عرض أي طلب. يتم الاحتفاظ بالحصة الأكبر.

عند التثبيت، يتم إعلام المستخدم بالأذونات التي يتطلبها التطبيق أو الإضافة. من خلال متابعة التثبيت، يمنح المستخدم إذنًا ضمنيًا لجميع الصفحات التي يتم إدراج عناوين URL الخاصة بها في ملف exit.json للتطبيق أو الإضافة.

تجربة المستخدم في الطلبات اللاحقة لزيادة مساحة التخزينغير منطبق. لا يمكنك طلب سعة تخزين مؤقتة إضافية.

يطلب Chrome من المستخدم مرة أخرى.

 

لا يطالب Chrome المستخدم بعد التثبيت، بغض النظر عن طلبات زيادة الحصة من التطبيق أو الإضافة.
استمرار البيانات

مؤقت. يمكن للمتصفّح حذف البيانات.

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

ولا تفترض أن البيانات دائمة، لأن المستخدم يمكنه حذفها.

نفس مساحة التخزين الثابتة.

 

مساحة التخزين التلقائية

ما يصل إلى 20% من مساحة التخزين المُجمَّعة المشتركة.

0 ميغابايت عليك أن تطلب صراحةً مساحة تخزين محددة.

0 ميغابايت يجب طلب "unlimitedStorage" صراحةً في ملف البيان.

في حال عدم تحديد متطلبات مساحة التخزين، سيخصّص Chrome مساحة تخزين للتطبيق من المساحة المشتركة لمساحة التخزين المؤقتة.

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

واجهات برمجة التطبيقات بلا إنترنت

  • ذاكرة التخزين المؤقت للتطبيقات
  • نظام الملفات
  • IndexedDB
  • WebSQL (تم إيقافها منذ 18 تشرين الثاني (نوفمبر) 2010)

ملاحظة: تظل واجهات برمجة تطبيقات التخزين على الويب، مثل LocalStorage وsessionStorage، حجم 5 ميغابايت ثابتًا.

واجهة برمجة تطبيقات نظام الملفات

واجهات برمجة التطبيقات بلا إنترنت

  • ذاكرة التخزين المؤقت للتطبيقات
  • نظام الملفات
  • IndexedDB
  • WebSQL (متوقّفة نهائيًا)

ملاحظة: تظل واجهات برمجة تطبيقات التخزين على الويب، مثل LocalStorage وsessionStorage، حجم 5 ميغابايت ثابتًا.

إدارة حصتك

باستخدام واجهة برمجة تطبيقات إدارة الحصص التي تم توفيرها في Chrome 13، يمكنك إجراء ما يلي:

تم تنفيذ واجهة برمجة التطبيقات باستخدام الكائن العام window.webkitStorageInfo.

للاطّلاع على المستندات المرجعية، راجِع القسم التالي.

الاستعلام عن استخدام مساحة التخزين ومدى توفّرها

للاستعلام عن حجم مساحة التخزين المُستخدمة والمساحة المتاحة المتبقية للمضيف، اتصل queryUsageAndQuota() مع ما يلي:

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

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

يعرض مقتطف الرمز التالي كيفية الاستفسار عن مساحة التخزين:

// Request storage usage and capacity left
// Choose either Temporary or Persistent
navigator.webkitTemporaryStorage.queryUsageAndQuota (
    function(usedBytes, grantedBytes) {
        console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
    },
    function(e) { console.log('Error', e);  }
);

إذا أردت طلب معرفة حالة مساحة التخزين الدائمة، ما عليك سوى استبدال "webkitStorageInfo.TEMPORARY" مع "webkitStorageInfo.PERSISTENT" يوجد التعداد أيضًا في window (مساحة الاسم العامة)، لذا يمكنك أيضًا استخدام window.PERSISTENT window.TEMPORARY

طلب الحصول على مساحة تخزين إضافية

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

بالنسبة إلى التخزين الدائم لواجهة File System API، تكون الحصة التلقائية هي 0، لذلك عليك صراحةً تطلب مساحة تخزين لتطبيقك. يمكنك الاتصال بـ "requestQuota()" مع توضيح المعلومات التالية:

  • نوع مساحة التخزين
  • حجم الملف
  • تمت معاودة الاتصال بنجاح

استنادًا إلى ما تطلبه، سيحدث ما يلي:

  • في حال طلب حصة أكبر، يعرض المتصفّح شريط معلومات للمستخدم ويطلب منه: إما بمنح أو رفض الإذن لزيادة الحصة. في بعض الحالات، قد يتم عرض الطلب بدون تنبيه صوتي ويتم إرجاع الحصة الحالية أو الحصة الأصغر.
  • إذا كان مقدار الحصة التي تطلبها أقل من التخصيص الحالي للتطبيق، لن يتم عرض أي طلب.
  • وإذا طلبت الحصول على مساحة تخزين أكبر من المسموح به، ستظهر لك رسالة خطأ (QUOTA_EXCEEDED_ERR).
  • إذا اتصلت بـ requestQuota() مرة أخرى بعد أن منح المستخدم الإذن، لن يحدث شيء. لذا لا داعي للقلق بشأن استدعاء الطريقة مرة أخرى.

يمكنك الاطّلاع أدناه على كيفية طلب المزيد من مساحة التخزين:

// Request Quota (only for File System API)
var requestedBytes = 1024*1024*10; // 10MB

navigator.webkitPersistentStorage.requestQuota (
    requestedBytes, function(grantedBytes) {
        window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);

    }, function(e) { console.log('Error', e); }
);
});

جارٍ إعادة ضبط حصة الاختبار

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

  1. أدخِل chrome://settings/cookies في المربّع المتعدد الاستخدامات (شريط العناوين).
  2. ابحث عن تطبيقك.
  3. اختيار تطبيقك
  4. انقر على X على يسار الجزء المحدّد.

مرجع واجهة برمجة التطبيقات

يوثّق هذا القسم طرق واجهة برمجة تطبيقات إدارة الحصص.

الثوابت

في ما يلي ثوابت webkitStorageInfo، التي تشير إلى نوع التخزين.

ثابتالقيمةالوصف
TEMPORARY0مساحة تخزين مؤقتة.
PERSISTENT1التخزين الثابت:

نظرة عامة على الطريقة

queryUsageAndQuota
requestQuota

الطُرق

queryUsageAndQuota

تحقَّق من حجم مساحة التخزين المُستخدَمة والمساحة المتوفّرة للمضيف.

 // you could also use it from webkitPersistentStorage
navigator.webkitTemporaryStorage.queryUsageAndQuota(
      successCallback,
      errorCallback);
  • successCallback: معاودة اتصال اختيارية بمعلّمتَين:

    • يشير ذلك إلى العدد الحالي لوحدات البايت التي يستخدمها التطبيق.
    • عدد وحدات البايت المتبقية في الحصة.
  • errorCallback: معاودة الاتصال اختيارية بخطأ.

requestQuota

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

 // you could also use it from webkitTemporaryStorage
navigator.webkitPersistentStorage.requestQuota (
      newQuotaInBytes,
      quotaCallback,
      errorCallback);
المعلمات
  • newQuotaInBytes: مقدار وحدات البايت التي تريدها في مساحة التخزين المتوفّرة.
  • successCallback: معاودة اتصال اختيارية تتجاوز عدد وحدات البايت الممنوحة.
  • errorCallback: معاودة الاتصال اختيارية بخطأ.

التطوير المستقبلي

تتمثل الخطة في وضع جميع واجهات برمجة تطبيقات تخزين HTML5 بلا اتصال - بما في ذلك IndexedDB وذاكرة التخزين المؤقت للتطبيق وملف وواجهات برمجة التطبيقات الأخرى التي قد يتم تحديدها ضمن "الحصة" Management API: وستتمكّن من إدارة مساحة التخزين المخصّصة بالكامل من خلالها.