HTML5 limite de taille de stockage local pour les sous-domaines

les bases de données localStorage de HTML5 sont généralement de taille limitée - la taille standard est de 5 ou 10 MB par domaine. Ces limites peuvent-elles être contournées par des sous-domaines (par exemple: example.com, hack1.example.com et hack2.example.com tous ont leur propre base de données de 5 Mo)? Et y a-t-il quelque chose dans la norme qui spécifie si les domaines de parent peuvent accéder aux bases de données de leurs enfants? Je ne trouve rien, et je vois des arguments pour le faire de toute façon, mais il semble qu'il doit y avoir un modèle standard.

76
demandé sur Julien Kronegg 2010-04-30 23:55:18

5 réponses

de http://dev.w3.org/html5/webstorage/#disk-space

une limite essentiellement arbitraire de cinq mégaoctets par origine est recommandée. Les commentaires sur la mise en œuvre sont les bienvenus et seront utilisés pour mettre à jour cette suggestion à l'avenir.

il mentionne également que:

les agents utilisateurs doivent se prémunir contre les sites qui stockent des données sous les origines d'autres affiliés sites, par exemple stocker jusqu'à la limite dans a1.example.com, a2.example.com, a3.example.com, etc, contournant le principaux example.com limite de stockage.

53
répondu Vetle 2012-05-22 15:18:15

voici un résultat de test assez détaillé avec beaucoup de navigateurs de bureau et Mobiles couverts: http://dev-test.nemikor.com/web-storage/support-test/

qui confirme ce rapport de bug: http://code.google.com/p/chromium/issues/detail?id=58985#c15

vous pouvez compter sur seulement 2,5 Mo, pas 5 Mo, basé sur la longueur de chaîne que vous pouvez stocker.

14
répondu Jörn Zaefferer 2012-01-17 13:09:35

j'ai manqué cette question quand j'ai demandé " est-ce que 5MB est la limite de facto pour le stockage Web W3C? ", mais j'ai eu à peu près la même réponse. Si vous voulez plus d'information, j'ai fait le lien à certaines limites spécifiques au navigateur dans ma question.

9
répondu Kevin Hakanson 2017-05-23 12:34:10

une meilleure solution est d'utiliser la [HTML5 IndexedDB pour le stockage hors ligne.] 1

il ressemble au remplacement de L'ancien SQL Web (qui semble être mal nommé b / c il est pour offline de stockage) est: DB indexé, qui permet le stockage hors ligne et est toujours supportd:

IndexedDB est nouveau dans HTML5. Les bases de données Web sont hébergées et maintenues à l'intérieur d'un utilisateur navigateur. En permettant aux développeurs de créer des applications avec des capacités de requête riches il est envisagé qu'une nouvelle race de web les applications qui auront la capacité de travailler en ligne et off-line .

plus d'informations et un test-app at: http://ido-green.appspot.com/WebSQL-IndexedDB-example/jqm_indexedDB.html

5
répondu Clay Nichols 2015-05-04 13:00:51

pour obtenir 50 Mo d'espace de stockage utilisez le code ci-dessous

// 1. paste this line in your code
!function(){function e(t,o){return n?void(n.transaction("s").objectStore("s").get(t).onsuccess=function(e){var t=e.target.result&&e.target.result.v||null;o(t)}):void setTimeout(function(){e(t,o)},100)}var t=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;if(!t)return void console.error("indexDB not supported");var n,o={k:"",v:""},r=t.open("d2",1);r.onsuccess=function(e){n=this.result},r.onerror=function(e){console.error("indexedDB request error"),console.log(e)},r.onupgradeneeded=function(e){n=null;var t=e.target.result.createObjectStore("s",{keyPath:"k"});t.transaction.oncomplete=function(e){n=e.target.db}},window.ldb={get:e,set:function(e,t){o.k=e,o.v=t,n.transaction("s","readwrite").objectStore("s").put(o)}}}();

// 2. Setting values
ldb.set('nameGoesHere', 'value goes here');

// 3. Getting values - callback is required because the data is being retrieved asynchronously:
ldb.get('nameGoesHere', function (value) {
  console.log('And the value is', value);
});

source https://github.com/DVLP/localStorageDB

2
répondu Pawel 2016-05-27 15:55:46