HTML5 heeft veel opslag-API's geïntroduceerd waarmee u een grote hoeveelheid gegevens lokaal in de browsers van uw gebruikers kunt opslaan. Maar de hoeveelheid ruimte die voor elke app wordt toegewezen, is standaard beperkt tot enkele megabytes. Met Google Chrome kunt u een groter opslagquotum aanvragen, bovenop de vorige limiet van slechts 5 MB.
In dit document maakt u kennis met de basisconcepten rond de typen opslag die in Chrome worden gebruikt en wordt de experimentele Quota Management API beschreven, waarmee u uw opslagquota kunt beheren. In het document wordt ervan uitgegaan dat u al bekend bent met de algemene concepten van opslag aan de clientzijde en weet hoe u offline API's moet gebruiken.
Inhoud
Soorten opslag
In Google Chrome kunt u om drie soorten opslag vragen:
Deze opslagtypen worden in de volgende paragrafen nader beschreven en in onderstaande tabel met elkaar vergeleken.
Tijdelijke opslag
Tijdelijke opslag is tijdelijke opslag die beschikbaar is voor elke web-app. Chrome geeft uw app automatisch tijdelijke opslagruimte, u hoeft dus geen toewijzing aan te vragen.
Het zwembad delen
Tijdelijke opslag wordt gedeeld door alle webapps die in de browser worden uitgevoerd. De gedeelde pool kan maximaal 1/3 van de beschikbare schijfruimte in beslag nemen. Opslag die al door apps wordt gebruikt, wordt meegenomen in de berekening van de gedeelde pool; dat wil zeggen dat de berekening is gebaseerd op (available storage space + storage being used by apps) * .333
.
Elke app kan maximaal 20% van de gedeelde pool bezitten. Als de totale beschikbare schijfruimte bijvoorbeeld 60 GB bedraagt, is de gedeelde pool 20 GB en kan de app maximaal 4 GB bevatten. Dit wordt berekend vanaf 20% (tot 4 GB) van 1/3 (tot 20 GB) van de beschikbare schijfruimte (60 GB).
Vraagt om meer ruimte
Hoewel u kunt opvragen hoeveel opslagruimte er beschikbaar is voor uw app en hoeveel gegevens er al zijn opgeslagen voor uw app, kunt u niet om meer tijdelijke opslagruimte vragen. Als een app het toegewezen quotum overschrijdt, wordt er een fout gegenereerd.
Geen opslagruimte meer
Zodra het opslagquotum voor de hele pool wordt overschreden, worden alle gegevens die zijn opgeslagen voor de minst recent gebruikte host verwijderd. De browser zal de gegevens in LocalStorage en SessionStorage echter niet verwijderen. Voor gegevens die zijn opgeslagen in andere offline API's verwijdert de browser de gegevens geheel en niet gedeeltelijk, zodat app-gegevens niet op onverwachte manieren beschadigd raken.
Omdat elke app beperkt is tot maximaal 20% van de opslagpool, is verwijdering waarschijnlijk alleen mogelijk als de gebruiker actief meer dan vijf offline apps gebruikt die elk de maximale opslagruimte gebruiken.
De beschikbare opslagruimte kan echter kleiner worden naarmate gebruikers meer bestanden op hun harde schijf plaatsen. Wanneer de beschikbare schijfruimte krap wordt (denk eraan dat de gedeelde pool slechts de helft van de huidige beschikbare schijfruimte krijgt), verwijdert de browser alle gegevens die zijn opgeslagen voor de minst recent gebruikte host.
Aanhoudende opslag
Persistente opslag is opslag die in de browser blijft staan, tenzij de gebruiker deze verwijdert. Het is alleen beschikbaar voor apps die de File System API gebruiken, maar zal uiteindelijk ook beschikbaar zijn voor andere offline API's zoals IndexedDB en Application Cache.
Een applicatie kan een groter quotum hebben voor permanente opslag dan voor tijdelijke opslag, maar u moet opslag aanvragen met behulp van de Quota Management API en de gebruiker moet u toestemming geven om meer ruimte te gebruiken. Chrome presenteert een informatiebalk waarin de gebruiker wordt gevraagd de app meer lokale opslagruimte te verlenen.
Onbeperkte opslag
Onbeperkte opslag is vergelijkbaar met permanente opslag, maar is alleen beschikbaar voor Chrome-apps en -extensies (.crx-bestanden). De grootte van onbeperkte opslag wordt alleen beperkt door de beschikbaarheid van ruimte op de harde schijf van de gebruiker. U kunt om de toestemming unlimitedStorage
vragen in het manifestbestand voor een app of extensie . Bij de installatie wordt de gebruiker geïnformeerd over de vereiste rechten voor de app of extensie. Door door te gaan met de installatie verleent de gebruiker impliciet toestemming voor alle pagina's waarvan de URL's worden vermeld in het bestand manifest.json.
Raadpleeg voor meer informatie de respectievelijke handleidingen voor ontwikkelaars voor apps en extensies .
Opslagtypen vergelijken
De volgende tabel beschrijft de verschillen tussen de drie soorten opslag.
Tijdelijke opslag | Aanhoudende opslag | Onbeperkte opslag | |
---|---|---|---|
Basisbeschrijving | Tijdelijke opslag die beschikbaar is voor elke web-app. Het gebeurt automatisch en hoeft niet te worden aangevraagd. | Permanente opslag die moet worden aangevraagd via de Quota Management API en moet worden verleend door gebruikers. | Permanente opslag voor Chrome-extensies en apps. Het wordt ingesteld in het manifestbestand en moet door gebruikers worden verleend. |
Beschikbaarheid | Alle webapps. | Alle webapps. | Uniek voor Chrome-extensies en voor gehoste en geïnstalleerde webapps . |
Toestemming | Geen. U kunt er gebruik van maken zonder er expliciet om te vragen. | U moet meer opslagruimte aanvragen met behulp van de Quota Management API. | U kunt om de toestemming voor unlimitedStorage vragen in het manifestbestand voor de app of extensie . |
Gebruikerservaring bij het eerste gebruik | Onzichtbaar voor de gebruiker. De app werkt gewoon. | Chrome geeft een informatiebalk weer waarin de gebruiker wordt gevraagd het opslagverzoek te accepteren of af te wijzen. Maar als het door u aangevraagde quotumbedrag feitelijk kleiner is dan de huidige toewijzing van de app, wordt er geen prompt weergegeven. Het grotere quotum blijft behouden. | Bij de installatie wordt de gebruiker geïnformeerd over de vereiste rechten voor de app of extensie. Door door te gaan met de installatie verleent de gebruiker impliciet toestemming voor alle pagina's waarvan de URL's worden vermeld in het manifest.json-bestand voor app of extensie . |
Gebruikerservaring bij volgende verzoeken om meer opslag | Niet van toepassing. U kunt niet om meer tijdelijke opslag vragen. | Chrome vraagt de gebruiker opnieuw. | Chrome vraagt de gebruiker na de installatie niet, ongeacht de verzoeken om verhoogde quota door de app of extensie. |
Persistentie van gegevens | Vergankelijk. De browser kan de gegevens verwijderen. | Volhardend. De browser verwijdert de gegevens niet, tenzij de gebruiker daartoe opdracht geeft. Gegevens zijn beschikbaar bij volgende toegangen. Ga er niet vanuit dat de gegevens permanent zijn, want de gebruiker kan deze verwijderen. | Hetzelfde als permanente opslag. |
Standaard opslagruimte | Tot 20% van het gedeelde zwembad. | 0MB. U dient expliciet om een specifieke opslagruimte te vragen. | 0MB. U moet expliciet om Als u uw opslagvereisten niet opgeeft, wijst Chrome opslag aan de app toe vanuit de gedeelde pool met tijdelijke opslag. |
Maximale opslagruimte | Tot 20% van het gedeelde zwembad. | Zo groot als de beschikbare ruimte op de harde schijf. Het heeft geen vaste opslagpool. | Zo groot als de beschikbare ruimte op de harde schijf. |
Aanbevolen gebruiksscenario | Caching. | Apps die offline werken of een groot aantal assets hebben. | Apps die zijn ontworpen om te worden uitgevoerd in Google Chrome. |
API's die er gebruik van kunnen maken | Offline API's
Opmerking: API's voor webopslag zoals LocalStorage en SessionStorage blijven vast op 5 MB. | Bestandssysteem-API | Offline API's
Opmerking: API's voor webopslag zoals LocalStorage en SessionStorage blijven vast op 5 MB. |
Beheer uw quotum
Met de Quota Management API, geïntroduceerd in Chrome 13, kun je het volgende doen:
- Vraag opslaggebruik en -beschikbaarheid op
- Vraag om meer opslagruimte
- Quota voor testen opnieuw instellen
De API wordt geïmplementeerd met het globale object window.webkitStorageInfo
.
Zie de volgende sectie voor de referentiedocumentatie.
Opslaggebruik en -beschikbaarheid opvragen
Om de opslaggrootte die wordt gebruikt en de beschikbare ruimte voor de host op te vragen, roept u queryUsageAndQuota()
aan met het volgende:
- Type opslag dat u wilt controleren
- Succes terugbellen
Het door de API gerapporteerde gebruik komt mogelijk niet overeen met de werkelijke grootte van de gebruikersgegevens, omdat elke opslag mogelijk wat extra bytes nodig heeft om de metagegevens op te slaan. Bovendien kunnen statusupdates achterblijven, waardoor de API niet de meest recente opslagstatus weergeeft.
Het volgende codefragment laat zien hoe u vragen kunt stellen over opslagruimte:
// 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); }
);
Als u de status van permanente opslag wilt opvragen, vervangt u eenvoudigweg webkitStorageInfo.TEMPORARY
door webkitStorageInfo.PERSISTENT
. De enum bevindt zich ook in het window
object (algemene naamruimte), dus u kunt ook window.PERSISTENT
en window.TEMPORARY
gebruiken.
Vraagt om meer opslagruimte
U hoeft niet om meer tijdelijke opslag te vragen, omdat de toewijzing automatisch gebeurt en u niet verder kunt komen dan de maximale limiet (zoals beschreven in de tabel ).
Voor permanente opslag voor File System API is het standaardquotum 0, dus u moet expliciet opslag voor uw toepassing aanvragen. Roep requestQuota()
aan met het volgende:
- Soort opslag
- Maat
- Succes terugbellen
Afhankelijk van wat u vraagt, gebeurt het volgende:
- Als u om een groter quotum vraagt, presenteert de browser een informatiebalk aan de gebruiker en wordt hem gevraagd toestemming voor een verhoogd quotum te verlenen of te weigeren. In sommige gevallen kan het verzoek stilzwijgend worden afgewezen en wordt het huidige quotum of een kleiner quotum geretourneerd.
- Als het door u aangevraagde quotumbedrag kleiner is dan de huidige toewijzing van de app, wordt er geen prompt weergegeven.
- Als u om meer opslagruimte vraagt dan is toegestaan, krijgt u een foutmelding (
QUOTA_EXCEEDED_ERR
). - Als u
requestQuota()
opnieuw aanroept nadat de gebruiker al toestemming heeft verleend, gebeurt er niets. Dus doe geen moeite om de methode opnieuw aan te roepen.
Hieronder ziet u hoe u om meer opslagruimte kunt vragen:
// 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); }
);
});
Quota voor testen opnieuw instellen
Wanneer u de opslag in uw app test, wilt u wellicht de opgeslagen gegevens wissen, zodat u het quotabeheer opnieuw kunt testen in uw app. Om dit te doen:
- Voer
chrome://settings/cookies
in de omnibox (de adresbalk) in. - Zoek uw app.
- Selecteer uw app.
- Klik op de X aan de rechterkant van de gemarkeerde selectie.
API-referentie
In deze sectie worden de methoden van de Quota Management API gedocumenteerd.
Constanten
Hieronder volgen webkitStorageInfo
constanten, die het type opslag aangeven.
Constante | Waarde | Beschrijving |
---|---|---|
TEMPORARY | 0 | Tijdelijke opslag. |
PERSISTENT | 1 | Aanhoudende opslag. |
Methode overzicht
queryUsageAndQuota |
requestQuota |
Methoden
queryUsageAndQuota
Controleer de opslaggrootte die wordt gebruikt en de beschikbare ruimte die nog beschikbaar is voor de host.
// you could also use it from webkitPersistentStorage
navigator.webkitTemporaryStorage.queryUsageAndQuota(
successCallback,
errorCallback);
successCallback
: Optionele callback met twee parameters:- Het huidige aantal bytes dat de app gebruikt.
- Het aantal resterende bytes in het quotum.
errorCallback
: Optionele fout-callback.
verzoekQuota
Vraag om meer opslagruimte. De browser presenteert een informatiebalk waarin de gebruiker wordt gevraagd de app toestemming te geven of te weigeren voor meer opslagruimte.
// you could also use it from webkitTemporaryStorage
navigator.webkitPersistentStorage.requestQuota (
newQuotaInBytes,
quotaCallback,
errorCallback);
Parameters
-
newQuotaInBytes
: Het aantal bytes dat u in uw opslagquotum wilt hebben. -
successCallback
: Optionele callback die het toegekende aantal bytes doorgeeft. -
errorCallback
: Optionele fout-callback.
Toekomstige ontwikkeling
Het plan is om alle HTML5-API's voor offline opslag, inclusief IndexedDB, Application Cache, File System en andere API's die mogelijk worden gespecificeerd, onder de Quota Management API te plaatsen. U kunt er alle opslagtoewijzingen mee beheren.