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
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 depolama | Kalı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. |
İzin | Yok. Ö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ı deneyimi | Kullanı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ı deneyimi | Geç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 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
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:
- Sorgu depolama kullanımı ve kullanılabilirliği
- Daha fazla depolama alanı isteme
- Test için kotayı sıfırlama
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:
- Çok amaçlı adres çubuğuna (adres çubuğu)
chrome://settings/cookies
yazın. - Uygulamanızı arayın.
- Uygulamanızı seçin.
- 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.
Sabit | Değer | Açıklama |
---|---|---|
TEMPORARY | 0 | Geçici depolama. |
PERSISTENT | 1 | Kalı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.