HTML5 Çevrimdışı Depolama Alanını Yönetme

HTML5, büyük miktarda veriyi kullanıcılarınızın cihazlarında yerel olarak depolamanıza olanak tanıyan birçok depolama API'sı sundu. izin verir. Ancak her uygulamaya ayrılan alan varsayılan olarak birkaç taneyle sınırlıdır. megabayt. Google Chrome, önceki sınırın ötesinde daha büyük bir depolama alanı kotası istemenize olanak sağlar. 5 MB.

Bu dokümanda, Chrome'da kullanılan depolama alanı türleriyle ilgili temel kavramlar ve depolama alanı kotanızı yönetmenizi sağlayan deneysel Quota Management API'yi açıklar. İlgili içeriği oluşturmak için kullanılan dokümanında istemci taraflı depolamaya ilişkin genel kavramları bildiğiniz ve çevrimdışı API'lerin kullanımını öğrenin.

İçindekiler

  1. Depolama alanı türleri
    1. Geçici
    2. Kalıcı
    3. Sınırsız
    4. Depolama Alanı Türlerini Karşılaştırma
  2. Kotanızı yönetme
    1. Sorgu depolama kullanımı ve kullanılabilirliği
    2. Daha fazla depolama alanı isteme
    3. Test için kotayı sıfırlama
  3. API referansı
    1. Sabit değerler
    2. Yönteme genel bakış
    3. Yöntemler
  4. Gelecekteki geliştirmeler

Depolama alanı türleri

Google Chrome'da üç tür depolama alanı isteyebilirsiniz:

Bu depolama türleri, aşağıdaki bölümlerde daha ayrıntılı olarak açıklanmıştır ve her biriyle aşağıdaki tabloda bulabilirsiniz.

Geçici depolama

Geçici depolama, herhangi bir web uygulaması tarafından kullanılabilen geçici depolama alanıdır. Chrome otomatik olarak uygulamanızın geçici depolama alanı olduğundan ayırma isteğinde bulunmanız gerekmez.

Havuzu paylaşma

Geçici depolama alanı, tarayıcıda çalışan tüm web uygulamaları arasında paylaşılır. Paylaşılan havuz, kullanılabilir disk alanının üçte biri kadar olabilir. Uygulamalar tarafından halihazırda kullanılan depolama alanı: paylaşılan havuz hesaplamasına dahil edilir; yani hesaplama, (available storage space + storage being used by apps) * .333

Her uygulama, paylaşılan havuzun en fazla% 20'sine sahip olabilir. Örneğin, toplam kullanılabilir disk alanı 60 GB, paylaşılan havuz 20 GB, uygulamada ise en fazla 4 GB depolama alanı kullanılabilir. Bu, %20'den hesaplanır (en fazla 4 GB)/1/3 (en fazla 20 GB) kullanılabilir disk alanının (60 GB).

Daha fazla alan isteniyor

Uygulamanız için kullanılabilen depolama alanı miktarını ve bu depolama alanı miktarını sorgulayabilirsiniz daha fazla geçici depolama alanı talep edemezsiniz. Uygulama kotayı aştığında bir hata verilir.

Depolama alanı dolmak üzere

Havuzun tamamının depolama alanı kotası aşıldığında, belirlenen süre boyunca son kullanılan ana makine silinir. Ancak tarayıcı, LocalStorage'daki verileri kalıcı olarak silmez ve SessionStorage'a dokunun. Diğer çevrimdışı API'lerde depolanan veriler için tarayıcı verileri tamamen siler. uygulama verilerinin beklenmedik şekillerde bozulmamasını sağlayabilir.

Her uygulama depolama alanının maksimum% 20'siyle sınırlı olduğundan silme işlemi büyük olasılıkla yalnızca kullanıcı , her biri maksimum depolama alanı kullanan beşten fazla çevrimdışı uygulamayı aktif olarak çalıştırıyor.

Ancak, kullanıcılar sabit disklerine daha fazla dosya ekledikçe kullanılabilir depolama alanı küçülebilir. kullanılabilir disk alanı daralır (Paylaşılan havuzun mevcut depolama alanının yalnızca yarısını disk alanı varsa) tarayıcı, en son kullanılan ana makine için depolanan tüm verileri siler.

Kalıcı depolama alanı

Kalıcı depolama, kullanıcı tarafından kalıcı olarak silinmediği sürece tarayıcıda kalan depolama alanıdır. Kullanılabilir yalnızca File System API'yi kullanan, ancak ilerleyen zamanlarda diğer çevrimdışı API'lerin de kullanımına sunulacak uygulamalar gibi çeşitli uygulamalar vardır.

Bir uygulamanın kalıcı depolama alanı için kotası, geçici depolama alanından daha büyük olabilir, ancak Quota Management API kullanarak depolama isteğinde bulunabilirsiniz. Kullanıcının daha fazla depolama alanı boşluk oluşturur. Chrome, kullanıcıdan uygulamaya daha fazla yerel depolama alanı vermesini isteyen bir bilgi çubuğu sunar.

Sınırsız Depolama Alanı

Sınırsız depolama alanı, kalıcı depolama alanına benzer ancak yalnızca Chrome uygulamaları ve uzantıları (.crx dosyaları). Sınırsız depolama alanının boyutu yalnızca kullanılabilir alanla sınırlıdır kullanıcının sabit diskinde bulunur. Şu işlemler için manifest dosyasında unlimitedStorage iznini isteyebilirsiniz: Bir uygulama veya uzantı. Yükleme sırasında kullanıcı, uygulama veya uzantıdır. Yükleme işlemine devam ederek, kullanıcı dolaylı olarak URL'leri manifest.json dosyasında listelenen tüm sayfalar.

Daha fazla bilgi edinmek için uygulamalar ve uzantılar ile ilgili geliştirici kılavuzlarına bakın.

Depolama Türlerini Karşılaştırma

Aşağıdaki tabloda, üç depolama türü arasındaki farklar açıklanmaktadır.

 Geçici depolamaKalıcı depolama alanıSınırsız Depolama Alanı
Temel açıklama

Herhangi bir web uygulaması tarafından kullanılabilen geçici depolama alanı.

Bu işlem otomatiktir ve istenmesi gerekmez.

Kotalar Yönetimi API'si üzerinden istenmesi ve kullanıcılar tarafından verilmesi gereken kalıcı depolama alanı.

Chrome uzantıları ve uygulamaları için kalıcı depolama alanı.

Manifest dosyasında ayarlanır ve kullanıcılar tarafından verilmelidir.

Kullanılabilirlik

Tüm web uygulamaları.

Tüm web uygulamaları.Chrome uzantılarının yanı sıra barındırılan ve yüklenen web uygulamalarına özeldir.
İzinYok. Özel olarak istekte bulunmadan kullanabilirsiniz.

Quota Management API'yi kullanarak daha fazla depolama alanı istemeniz gerekir.

Uygulama veya uzantı için manifest dosyasında unlimitedStorage iznini isteyebilirsiniz.
İlk kullanımda kullanıcı deneyimiKullanıcı göremez. Uygulama hemen çalışıyor.

Chrome, kullanıcıdan depolama alanı isteğini kabul etmesini veya reddetmesini isteyen bir bilgi çubuğu görüntüler.

Ancak istediğiniz kota miktarı aslında uygulamanın mevcut tahsisinden azsa herhangi bir istem gösterilmez. Daha büyük olan kota korunur.

Yükleme sırasında kullanıcı, uygulama veya uzantının gerektirdiği izinler hakkında bilgilendirilir. Kullanıcı, yükleme işlemine devam ederek uygulama veya uzantı için URL'leri manifest.json dosyasında listelenen tüm sayfalara dolaylı olarak izin verir.

Depolama alanını artırmak için daha sonra gönderilen isteklerde kullanıcı deneyimiGeçerli değil. Daha fazla geçici depolama alanı talep edemezsiniz.

Chrome, kullanıcıdan tekrar izin ister.

 

Chrome, uygulama veya uzantı tarafından kota artışı isteklerinden bağımsız olarak, yükleme sonrasında kullanıcıdan istekte bulunmaz.
Verilerin kalıcılığı

Geçici. Tarayıcı, verileri silebilir.

Kalıcı'ya dokunun. Tarayıcı, kullanıcı istemediği sürece verileri silmez. Veriler sonraki erişimlerde kullanılabilir.

Verilerin kalıcı olduğunu varsaymayın. Kullanıcı verileri silebilir.

Kalıcı depolama alanıyla aynıdır.

 

Varsayılan depolama alanı

Paylaşılan havuzun% 20'si kadar.

0 MB. Belirli bir depolama alanını açıkça istemeniz gerekir.

0 MB. Manifest dosyasında unlimitedStorage iznini açıkça istemeniz gerekir.

Depolama alanı gereksinimlerinizi belirtmezseniz Chrome, depolama alanını paylaşılan geçici depolama havuzundan uygulamaya ayırır.

Maksimum depolama alanıPaylaşılan havuzun% 20'si kadar.Sabit diskteki kullanılabilir alan kadar büyük. Sabit bir depolama alanı havuzu yoktur.Sabit diskteki kullanılabilir alan kadar büyük.
Önerilen kullanım alanıÖnbelleğe alınıyorÇevrimdışı çalışan veya çok sayıda öğeye sahip uygulamalar.Google Chrome'da çalışacak şekilde tasarlanmış uygulamalar.
Kullanabilen API'ler

Çevrimdışı API'ler

Not: LocalStorage ve SessionStorage gibi web depolama API'leri 5 MB'ta sabit kalır.

Dosya Sistemi API'sı

Çevrimdışı API'ler

  • Uygulama Önbelleği
  • Dosya Sistemi
  • IndexedDB
  • WebSQL (desteği sonlandırılmış)

Not: LocalStorage ve SessionStorage gibi web depolama API'leri 5 MB'ta sabit kalır.

Kotanızı yönetme

Chrome 13'te kullanıma sunulan Quota Management API ile aşağıdakileri yapabilirsiniz:

API, window.webkitStorageInfo genel nesnesiyle uygulandı.

Referans belgeler için sonraki bölüme göz atabilirsiniz.

Depolama alanı kullanımını ve kullanılabilirliğini sorgulama

Kullanılan depolama alanı boyutunu ve barındırıcı için kalan kullanılabilir alanı sorgulamak için şu komutu çalıştırın: Şunları içeren queryUsageAndQuota():

  • Kontrol etmek istediğiniz depolama alanı türü
  • Geri arama başarılı

API tarafından bildirilen kullanım, depolama alanlarının her biri için kullanıcı verilerinin gerçek boyutuyla eşleşmeyebilir. veri depolaması için fazladan bayt gerekebilir. Ayrıca, durum güncellemeleri gecikmeli olarak API en son depolama alanı durumunu yansıtmıyor.

Aşağıdaki kod snippet'inde, depolama alanı hakkında nasıl bilgi alabileceğiniz gösterilmektedir:

// 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);  }
);

Kalıcı depolama alanının durumunu öğrenmek istiyorsanız webkitStorageInfo.PERSISTENT ile webkitStorageInfo.TEMPORARY. Sıralama da window nesnesi (genel ad alanı) olduğundan window.PERSISTENT ve window.TEMPORARY.

Daha fazla depolama alanı isteniyor

Tahsis otomatik olarak yapıldığından daha fazla geçici depolama alanı istemenize gerek yoktur ve maksimum sınırın dışında (tabloda açıklandığı şekilde).

File System API için kalıcı depolama alanı için varsayılan kota 0'dır. Bu nedenle depolama alanı isteği gönderin. Aşağıdaki bilgileri kullanarak requestQuota() adlı iş ortağını arayın:

  • Depolama alanı türü
  • Boyut
  • Geri arama başarılı

Ne istediğinize bağlı olarak aşağıdakiler gerçekleşir:

  • Daha yüksek bir kota talep ederseniz tarayıcı, kullanıcıya bir bilgi çubuğu sunar ve kullanıcıdan bunu yapmasını ister. kota artışı için izin verebilir veya reddedebilir. Bazı durumlarda istek, sessiz veya sessiz olabilir. reddedilir ve mevcut kota veya daha küçük kota döndürülür.
  • İstediğiniz kota, uygulamanın mevcut tahsisinden azsa herhangi bir istem gösterilmez.
  • İzin verilenden daha fazla depolama alanı isterseniz bir hata (QUOTA_EXCEEDED_ERR) alırsınız.
  • Kullanıcı zaten izin verdikten sonra requestQuota() numarasını tekrar ararsanız hiçbir şey olmaz. Bu nedenle, yöntemi tekrar çağırmak zorunda değilsiniz.

Aşağıda, nasıl daha fazla depolama alanı isteyebileceğinizi görebilirsiniz:

// 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); }
);
});

Test kotası sıfırlanıyor

Uygulamanızda depolama alanını test ederken, depoladığınız verileri temizlemek isteyebilirsiniz. uygulamanızda kota yönetimini yeniden test edebilirsiniz. Bunu yapmak için:

  1. Çok amaçlı adres çubuğuna (adres çubuğu) chrome://settings/cookies yazın.
  2. Uygulamanızı arayın.
  3. Uygulamanızı seçin.
  4. Vurgulanan seçimin sağ tarafındaki X simgesini tıklayın.

API referansı

Bu bölümde Quota Management API'nin yöntemleri açıklanmaktadır.

Sabitler

Aşağıda, depolama türünü gösteren webkitStorageInfo sabit değerleri verilmiştir.

SabitDeğerAçıklama
TEMPORARY0Geçici depolama.
PERSISTENT1Kalıcı depolama alanı.

Yönteme genel bakış

queryUsageAndQuota
requestQuota

Yöntemler

queryUsageAndQuota

Kullanılan depolama alanı boyutunu ve barındırıcı için kalan kullanılabilir alanı kontrol edin.

 // you could also use it from webkitPersistentStorage
navigator.webkitTemporaryStorage.queryUsageAndQuota(
      successCallback,
      errorCallback);
  • successCallback: İki parametreli isteğe bağlı geri çağırma:

    • Uygulamanın kullandığı mevcut bayt sayısı.
    • Kotada kalan bayt sayısı.
  • errorCallback: İsteğe bağlı hata geri çağırması.

requestQuota

Daha fazla depolama alanı isteyin. Tarayıcı, kullanıcıdan uygulamaya erişim isteğini onaylamasını veya reddetmesini isteyen bir bilgi çubuğu sunar. izin vermiş olursunuz.

 // you could also use it from webkitTemporaryStorage
navigator.webkitPersistentStorage.requestQuota (
      newQuotaInBytes,
      quotaCallback,
      errorCallback);
Parametreler
  • newQuotaInBytes: Depolama alanı kotanızda olmasını istediğiniz bayt miktarı.
  • successCallback: Verilen bayt miktarını ileten isteğe bağlı geri çağırma.
  • errorCallback: İsteğe bağlı hata geri çağırması.

Gelecekteki geliştirmeler

Plan; IndexedDB, Uygulama Önbelleği, Dosya gibi tüm HTML5 çevrimdışı depolama API'lerini yerleştirmektir. Sistem ve belirtilebilecek diğer API'ler (Kota altında) Management API'si. Ayrılan tüm depolama alanını bununla yönetebileceksiniz.