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

HTML5, büyük miktarda veriyi kullanıcılarınızın tarayıcılarında yerel olarak depolamanıza olanak tanıyan birçok depolama API'si sunuyor. Ancak her bir uygulamaya ayrılan alan miktarı varsayılan olarak birkaç megabaytla sınırlıdır. Google Chrome, yalnızca 5 MB'lık önceki sınırın ötesinde, daha büyük bir depolama alanı kotası istemenize olanak tanır.

Bu dokümanda, Chrome'da kullanılan depolama türleriyle ilgili temel kavramlar tanıtılmakta ve depolama alanı kotanızı yönetmenize olanak tanıyan deneysel Quota Management API açıklanmaktadır. Belgede, istemci tarafı depolamayla ilgili genel kavramlara ve çevrimdışı API'leri kullanmaya aşina olduğunuz varsayılır.

İçindekiler

  1. Depolama 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. Depolama alanı kullanımı ve kullanılabilirliğini sorgulama
    2. Daha fazla depolama alanı isteme
    3. Test kotasını sıfırlama
  3. API referansı
    1. Sabit değerler
    2. Yönteme genel bakış
    3. Yöntemler
  4. Gelecekteki geliştirme

Depolama türleri

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

Bu depolama alanı türleri, aşağıdaki bölümlerde daha ayrıntılı olarak açıklanmıştır ve aşağıdaki tabloda birbirleriyle karşılaştırılmıştır.

Geçici depolama

Geçici depolama, tüm web uygulamalarında kullanılabilen geçici depolama alanıdır. Chrome, uygulamanıza otomatik olarak geçici depolama alanı verir. Böylece tahsis isteğinde bulunmanız gerekmez.

Havuzu paylaşma

Geçici depolama, tarayıcıda çalışan tüm web uygulamaları arasında paylaşılır. Paylaşılan havuz, kullanılabilir disk alanının 1/3'ü kadar olabilir. Uygulamaların halihazırda kullandığı depolama alanı, paylaşılan havuzun hesaplamasına dahil edilir. Diğer bir deyişle, hesaplama şu temel alınarak yapılır: (available storage space + storage being used by apps) * .333 .

Her uygulamanın, paylaşılan havuzdan en fazla% 20'si olabilir. Örneğin, toplam kullanılabilir disk alanı 60 GB ise paylaşılan havuz 20 GB ve uygulamada en fazla 4 GB olabilir. Bu değer, kullanılabilir disk alanının (60 GB) 1/3'ünün (20 GB'a kadar) %20'si (4 GB'a kadar) üzerinden hesaplanır.

Daha fazla alan isteniyor

Uygulamanız için kullanılabilen depolama alanı miktarını ve zaten depolanmış olan veri miktarını sorguyabilseniz de daha fazla geçici depolama alanı isteyemezsiniz. Bir uygulama, kendisine ayrılan kotayı aşarsa bir hata verilir.

Depolama alanı tükeniyor

Havuzun tamamındaki depolama alanı kotası aşıldığında, en az kullanılan ana makine için depolanan verilerin tamamı silinir. Ancak tarayıcı, LocalStorage ve SessionStorage'daki verileri kalıcı olarak silmez. Uygulama verilerinin beklenmedik şekillerde bozulmaması için tarayıcı, diğer çevrimdışı API'lerde depolanan verileri kısmen değil, tamamen siler.

Her uygulama, depolama alanı havuzunun maksimum% 20'siyle sınırlı olduğundan silme işlemi yalnızca, kullanıcı etkin olarak her biri maksimum depolama alanını kullanan beşten fazla çevrimdışı uygulama çalıştırıyorsa gerçekleştirilebilir.

Ancak, kullanıcılar sabit disklerine daha fazla dosya ekledikçe kullanılabilir depolama alanı küçülebilir. Kullanılabilir disk alanı azaldığında (Unutmayın, paylaşılan havuz mevcut kullanılabilir disk alanının yalnızca yarısını kaplar) tarayıcı, en az 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. Yalnızca File System API kullanan uygulamalarda kullanılabilir. Ancak zaman içinde IndexedDB ve Uygulama Önbelleği gibi diğer çevrimdışı API'lerde de kullanıma sunulacaktır.

Bir uygulamanın kalıcı depolama için kotası geçici depolamaya göre daha büyük olabilir. Ancak Quota Management API'yi kullanarak depolama isteğinde bulunmanız ve kullanıcının size daha fazla alan kullanmanıza izin vermesi gerekir. 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ı) tarafından kullanılabilir. Sınırsız depolama alanının boyutu yalnızca kullanıcının sabit diskindeki alanın kullanılabilirliği ile sınırlıdır. Bir uygulama veya uzantı için manifest dosyasında unlimitedStorage iznini isteyebilirsiniz. Yükleme sırasında kullanıcı, uygulama veya uzantının gerektirdiği izinler konusunda bilgilendirilir. Yükleme işlemine devam ederek kullanıcı, URL'leri manifest.json dosyasında listelenen tüm sayfalar için dolaylı olarak izin verir.

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

Tüm web uygulamalarında kullanılabilen geçici depolama alanı.

Bu işlem otomatiktir ve istenmesi gerekmez.

Kota Yönetimi API'si üzerinden talep edilmesi 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 özgüdür.
İzinYok. Açıkça istekte bulunmadan bunu 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ımdaki kullanıcı deneyimiKullanıcı tarafından görülemez. Uygulama ç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ı uygulamanın şu anda ayrılandan 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 konusunda bilgilendirilir. Yükleme işlemine devam ederek kullanıcı, URL'leri uygulama veya uzantı için manifest.json dosyasında listelenen tüm sayfalara dolaylı yoldan izin verir.

Depolama alanı artışı için sonraki isteklerde kullanıcı deneyimiGeçerli değil. Daha fazla geçici depolama alanı isteyemezsiniz.

Chrome, kullanıcıyı tekrar ister.

 

Chrome, uygulama veya uzantı tarafından kota artışı isteği yapsa da yükleme sonrasında kullanıcıya istem göstermiyor.
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.

Kullanıcı tarafından silinebileceği için verilerin kalıcı olduğunu varsaymayın.

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

 

Varsayılan depolama alanı

%20'ye varan oranda paylaşılan havuz.

0 MB. Açıkça belirli bir depolama alanı istemeniz gerekir.

0 MB. unlimitedStorage dosyasını manifest dosyasında 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ı%20'ye varan oranda paylaşılan havuz.Sabit diskteki kullanılabilir alan büyüklüğünde. Sabit bir depolama alanı yoktur.Sabit diskteki kullanılabilir alan büyüklüğünde.
Önerilen kullanım alanıÖnbelleğe alınıyor.Çevrimdışı çalışan veya çok sayıda öğeye sahip uygulamalar.Google Chrome'da çalışmak üzere tasarlanmış uygulamalar.
Kullanabilen API'ler

Çevrimdışı API'ler

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

Dosya Sistemi API'sı

Çevrimdışı API'ler

  • Uygulama Önbelleği
  • Dosya Sistemi
  • IndexedDB
  • WebSQL (kullanımdan kaldırıldı)

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

Kotanızı yönetme

Chrome 13'te kullanıma sunulan Quota Management API ile şunları yapabilirsiniz:

API, window.webkitStorageInfo global nesnesiyle uygulandı.

Referans dokümanlar için sonraki bölüme göz atın.

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

Kullanılan depolama alanı boyutunu ve ana makinede kalan kullanılabilir alanı sorgulamak için aşağıdaki şekilde queryUsageAndQuota() çağrısı yapın:

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

Her depolama alanının meta verilerinin depolanması için ekstra baytlar gerekebileceğinden, API tarafından bildirilen kullanım, kullanıcı verilerinin gerçek boyutuyla eşleşmeyebilir. Ayrıca durum güncellemeleri gecikebilir. Bu durum, API'nin en son depolama alanı durumunu yansıtmasına neden olmaz.

Aşağıdaki kod snippet'inde, depolama alanıyla ilgili nasıl istekte bulunabileceğ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.TEMPORARY değerini webkitStorageInfo.PERSISTENT ile değiştirmeniz yeterlidir. Sıralama, window nesnesinde (genel ad alanı) da bulunur. Bu nedenle, window.PERSISTENT ve window.TEMPORARY öğelerini de kullanabilirsiniz.

Daha fazla depolama alanı isteniyor

Ayırma otomatik olduğundan ve maksimum sınırın (tabloda açıklandığı gibi) üzerine çıkamayacağınızdan, daha fazla geçici depolama alanı istemenize gerek yoktur.

File System API'nin kalıcı depolama alanı için varsayılan kota 0'dır. Bu nedenle uygulamanız için açıkça depolama alanı istemeniz gerekir. requestQuota() numaralı telefonu aşağıdakileri kullanarak arayın:

  • Depolama türü
  • Boyut
  • Başarılı geri arama

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

  • Daha büyük bir kota talep ederseniz tarayıcı, kullanıcıya bir bilgi çubuğu gösterir ve kota artışı için izin vermesini veya reddetmesini ister. Bazı durumlarda istek sessizce reddedilebilir ve mevcut kota veya daha düşük kota döndürülür.
  • İstediğiniz kota miktarı uygulamanın mevcut ayırmasından azsa herhangi bir istem gösterilmez.
  • İzin verilenden daha fazla depolama alanı isterseniz hata mesajı (QUOTA_EXCEEDED_ERR) alırsınız.
  • Kullanıcı daha önce izin verdikten sonra requestQuota() adlı kişiyi tekrar çağırırsanız hiçbir şey olmaz. Bu nedenle, yöntemi tekrar çağırmanıza gerek yok.

Aşağıda, daha fazla depolama alanı için nasıl istekte bulunabileceğiniz gösterilmektedir:

// 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ını sıfırlama

Uygulamanızın depolama alanını test ederken uygulamanızın kota yönetimini yeniden test etmek için depolanan verileri temizleyebilirsiniz. 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 işaretini 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 sabitleri 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 ana makine 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 arama:

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

requestQuota

Daha fazla depolama alanı isteyebilirsiniz. Tarayıcı, kullanıcıdan uygulamaya daha fazla depolama alanı alma izni vermesini veya bu izni reddetmesini istemek için bir bilgi çubuğu sunar.

 // 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ı aktaran isteğe bağlı geri arama.
  • errorCallback: İsteğe bağlı hata geri çağırma.

Gelecekteki gelişim

Plan, IndexedDB, Uygulama Önbelleği, Dosya Sistemi ve belirtilebilecek diğer API'ler dahil olmak üzere tüm HTML5 çevrimdışı depolama API'lerini Quota Management API'nin altına yerleştirmektir. Bu depolama alanı ile ayrılan tüm alanı yönetebilirsiniz.