قدّم HTML5 العديد من واجهات برمجة تطبيقات التخزين التي تتيح لك تخزين كمية كبيرة من البيانات محليًا في متصفحات المستخدمين. ولكن مقدار المساحة المخصّصة لكل تطبيق يقتصر افتراضيًا على بضعة ميغابايت. يتيح لك Google Chrome طلب حصة أكبر من سعة التخزين، تتجاوز الحد الأقصى السابق الذي كان يبلغ 5 ميغابايت.
يقدم لك هذا المستند المفاهيم الأساسية حول أنواع مساحة التخزين المستخدمة في Chrome، ويصف واجهة برمجة التطبيقات التجريبية لإدارة الحصص، التي تتيح لك إدارة حصتك من التخزين. تفترض المستند أنك على دراية بالمفاهيم العامة لمساحة التخزين من جهة العميل ومعرفة كيفية استخدام واجهات برمجة التطبيقات بلا إنترنت.
الفهرس
أنواع مساحة التخزين
في Google Chrome، يمكنك طلب ثلاثة أنواع من التخزين:
يتم وصف أنواع مساحة التخزين هذه بمزيد من التفصيل في الأقسام التالية وتتم مقارنتها مع بعضها البعض في الجدول أدناه.
التخزين المؤقت
مساحة التخزين المؤقتة هي مساحة تخزين مؤقتة متاحة لأي تطبيق ويب. يمنح Chrome تطبيقك مساحة تخزين مؤقتة تلقائيًا، لذلك لا تحتاج إلى طلب تخصيص مساحة تخزين.
مشاركة المسبح
تتم مشاركة مساحة التخزين المؤقتة بين جميع تطبيقات الويب التي يتم تشغيلها في المتصفِّح.
يمكن أن تصل مساحة التخزين المُجمَّعة المشتركة إلى ثلث مساحة القرص المتاحة. يتم احتساب مساحة التخزين التي سبق أن تستخدمها التطبيقات
عند احتساب مساحة التخزين المُجمَّعة المشتركة، أي أن عملية الحساب تعتمد على
(available storage space + storage being used by apps) * .333
.
يمكن أن يحتوي كل تطبيق على ما يصل إلى 20% من مساحة التخزين المُجمَّعة المشتركة. على سبيل المثال، إذا كانت مساحة القرص المتوفرة تبلغ 60 غيغابايت، يكون إجمالي مساحة التخزين المُجمَّعة المشترك 20 غيغابايت، ويمكن للتطبيق أن يصل إلى 4 غيغابايت. ويتم احتساب ذلك من نسبة %20 (حتى 4 غيغابايت) من مساحة القرص المتوفّرة (60 غيغابايت) هي 1/3 (ما يصل إلى 20 غيغابايت).
جارٍ طلب مساحة إضافية
على الرغم من أنّه يمكنك الاستعلام عن مقدار مساحة التخزين المتاحة لتطبيقك ومقدار البيانات المخزَّنة مسبقًا لتطبيقك، لا يمكنك طلب المزيد من مساحة التخزين المؤقتة. وإذا تجاوز أحد التطبيقات الحصة المخصّصة، سيظهر خطأ.
نفدت مساحة التخزين
وبعد تجاوز حصة مساحة التخزين للمجموعة بأكملها، يتم حذف جميع البيانات المُخزَّنة للمضيف الأقل استخدامًا مؤخرًا. ومع ذلك، لن يمحو المتصفح البيانات في LocalStorage وSessionStorage. بالنسبة إلى البيانات المخزَّنة في واجهات برمجة التطبيقات الأخرى بلا اتصال بالإنترنت، يحذف المتصفّح البيانات بالكامل وليس جزئيًا حتى لا تتلف بيانات التطبيق بطرق غير متوقعة.
ونظرًا لأنّ كل تطبيق يقتصر على 20% من مساحة التخزين المجمّعة، من المحتمل ألا يتم الحذف إلا إذا كان المستخدم يشغّل أكثر من خمسة تطبيقات تعمل بلا اتصال بالإنترنت ويستخدم كل تطبيق الحد الأقصى من مساحة التخزين.
ومع ذلك، يمكن أن تتقلص مساحة التخزين المتاحة مع إضافة المستخدمين لمزيد من الملفات على محركات الأقراص الثابتة لديهم. عندما تصبح مساحة القرص المتاحة محدودة (تذكّر أنّ مساحة التخزين المُجمَّعة المشتركة لا تحصل سوى على نصف مساحة القرص الحالية المتاحة)، يحذف المتصفح جميع البيانات المخزَّنة للمضيف الأقل استخدامًا.
التخزين الثابت
التخزين الدائم هو مساحة التخزين التي تظل في المتصفح ما لم يمحوها المستخدم نهائيًا. وهو متاح فقط للتطبيقات التي تستخدم File System API، ولكنه سيكون متاحًا في نهاية المطاف لواجهات برمجة التطبيقات الأخرى غير المتصلة بالإنترنت مثل IndexedDB وذاكرة التخزين المؤقت للتطبيقات.
يمكن أن يحصل التطبيق على حصة أكبر من مساحة التخزين الدائمة، لكن يجب طلب مساحة التخزين باستخدام واجهة برمجة التطبيقات لإدارة الحصص، ويجب أن يمنحك المستخدم إذنًا لاستخدام مساحة أكبر. ويعرض Chrome شريط معلومات يطالب المستخدم بمنح التطبيق مساحة تخزين محلية أكبر.
مساحة تخزين غير محدودة
إنّ مساحة التخزين غير المحدودة تشبه مساحة التخزين الدائمة، ولكنها لا تتوفر إلا لتطبيقات Chrome وإضافاته (ملفات .crx). حجم التخزين غير المحدود مقيد فقط بمدى توفر المساحة في محرك الأقراص الثابتة للمستخدم. يمكنك طلب إذن unlimitedStorage
في ملف البيان لتطبيق أو إضافة. عند التثبيت، يتم إعلام المستخدم بالأذونات المطلوبة من التطبيق أو الإضافة. من خلال متابعة التثبيت، يمنح المستخدم الإذن ضمنيًا لجميع الصفحات التي تم إدراج عناوين URL الخاصة بها في ملفManifest.json.
لمزيد من المعلومات، اطّلِع على أدلة المطوِّرين ذات الصلة للتطبيقات والإضافات.
مقارنة أنواع مساحات التخزين
يوضح الجدول التالي الاختلافات بين أنواع التخزين الثلاثة.
التخزين المؤقت | التخزين الثابت | مساحة تخزين غير محدودة | |
---|---|---|---|
الوصف الأساسي | مساحة تخزين مؤقتة متاحة لأي تطبيق ويب. هذه العملية تلقائية ولا تحتاج إلى طلبها. | مساحة التخزين الدائمة التي يجب طلبها من خلال واجهة برمجة تطبيقات إدارة الحصص ومنحها من المستخدمين. | مساحة تخزين دائمة لتطبيقات Chrome وإضافاته ويتم ضبطها في ملف البيان ويجب أن يمنحها المستخدمون. |
البلدان حيث تتوفّر الميزة | جميع تطبيقات الويب. | جميع تطبيقات الويب. | تتفرّد بها إضافات Chrome، بالإضافة إلى تطبيقات الويب المُستضافة والمثبَّتة. |
الإذن | بلا عُري ويمكنك استخدامه بدون طلبه صراحةً. | عليك طلب مساحة تخزين إضافية باستخدام واجهة برمجة التطبيقات لإدارة الحصص. | يمكنك طلب إذن unlimitedStorage في ملف البيان للتطبيق أو الإضافة. |
تجربة المستخدم عند الاستخدام الأول | غير مرئي للمستخدم. لا يتم تشغيل التطبيق إلا الآن. | يعرض Chrome شريط معلومات يطالب المستخدم بقبول طلب التخزين أو رفضه. ولكن إذا كان مقدار الحصة التي تطلبها أقل من الحصة الحالية للتطبيق، لن يظهر أي إشعار. يتم الاحتفاظ بالحصة الأكبر. | عند التثبيت، يتم إعلام المستخدم بالأذونات المطلوبة من التطبيق أو الإضافة. من خلال متابعة التثبيت، يمنح المستخدم الإذن ضمنيًا لجميع الصفحات التي تم إدراج عناوين URL الخاصة بها في ملف البيان.json من أجل التطبيق أو الإضافة. |
تجربة المستخدم في الطلبات اللاحقة لزيادة مساحة التخزين | غير منطبق. لا يمكنك طلب المزيد من مساحة التخزين المؤقتة. | يطلب Chrome من المستخدم مرة أخرى.
| ولا يطلب Chrome من المستخدم بعد التثبيت، بغض النظر عن طلبات زيادة الحصة من خلال التطبيق أو الإضافة. |
استمرارية البيانات | مؤقتة. ويمكن للمتصفح حذف البيانات. | دائم. ولا يحذف المتصفح البيانات ما لم يطلب المستخدم ذلك. تتوفّر البيانات في عمليات الوصول اللاحقة. لا تفترض أن البيانات دائمة، لأن المستخدم يمكنه حذفها. | مثل مساحة التخزين الثابتة.
|
مساحة التخزين التلقائية | ما يصل إلى 20% من مساحة التخزين المُجمَّعة المشتركة. | 0 ميغابايت عليك أن تطلب صراحةً مساحة تخزين محدَّدة. | 0 ميغابايت يجب طلب إذا لم تحدد متطلبات مساحة التخزين، سيخصص Chrome مساحة تخزين للتطبيق من مساحة التخزين المجمَّعة المشترَكة التي تضمّ مساحة تخزين مؤقتة. |
الحد الأقصى لمساحة التخزين | ما يصل إلى 20% من مساحة التخزين المُجمَّعة المشتركة. | أكبر من المساحة المتوفرة على محرك الأقراص الثابتة. لا تتوفر به مساحة تخزين ثابتة. | أكبر من المساحة المتوفرة على محرك الأقراص الثابتة. |
حالة الاستخدام المقترَحة | التخزين المؤقت. | التطبيقات التي تعمل بلا اتصال بالإنترنت أو تحتوي على عدد كبير من مواد العرض. | التطبيقات التي تم تصميمها للتشغيل في Google Chrome. |
واجهات برمجة التطبيقات التي يمكنها استخدامها | واجهات برمجة التطبيقات بلا إنترنت
ملاحظة: تظل واجهات برمجة التطبيقات لتخزين بيانات الويب، مثل LocalStorage وsessionStorage، ثابتة بحجم 5 ميغابايت. | واجهة برمجة تطبيقات نظام الملفات | واجهات برمجة التطبيقات بلا إنترنت
ملاحظة: تظل واجهات برمجة التطبيقات لتخزين بيانات الويب، مثل 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); }
);
});
جارٍ إعادة ضبط الحصة للاختبار
عند اختبار مساحة التخزين في تطبيقك، ننصحك بمحو البيانات المخزَّنة لكي تتمكّن من اختبار عملية إدارة الحصة من جديد في تطبيقك. ولإجراء ذلك، اتّبِع الخطوات التالية:
- أدخِل
chrome://settings/cookies
في المربّع المتعدد الاستخدامات (شريط العناوين). - ابحث عن تطبيقك.
- اختيار تطبيقك
- انقر على X على الجانب الأيسر من التحديد المميز.
مرجع واجهة برمجة التطبيقات
يوثق هذا القسم طرق واجهة برمجة تطبيقات إدارة الحصص.
الثوابت
في ما يلي ثوابت webkitStorageInfo
التي تشير إلى نوع التخزين.
ثابت | القيمة | الوصف |
---|---|---|
TEMPORARY | 0 | التخزين المؤقت. |
PERSISTENT | 1 | التخزين الثابت. |
نظرة عامة على الطريقة
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، بما في ذلك قاعدة البيانات المفهرسة وذاكرة التخزين المؤقت للتطبيقات ونظام الملفات وواجهات برمجة التطبيقات الأخرى التي قد يتم تحديدها، ضمن واجهة برمجة تطبيقات إدارة الحصص. ستتمكّن من إدارة جميع مساحات التخزين المخصَّصة لها.