2011-11-07 11 views
5

Le specifiche W3C per lo storage Web (noto colloquialmente come memoria locale HTML5, sebbene questo sia un termine improprio) consente agli agenti utente di applicare un limite di dimensioni, che è consigliato a 5 MB. Secondo varie fonti che ho trovato in rete, molti browser moderni usano questo limite di 5 MB, tranne IE che fornisce 10 MB.Come faccio a far fronte ai limiti di dimensione per lo spazio Web?

In primo luogo, voglio sapere, il limite si applica al totale combinato di localStorage e sessionStorage o a loro individualmente?

Ora, come possiamo effettivamente far fronte a questi limiti? C'è un modo per scoprire qual è il limite per un particolare browser? C'è qualche sito web che mantiene statistiche sui diversi browser? Viene generata un'eccezione quando il browser supera il limite? Esiste un modo infallibile per testare questa eccezione di "classe" in diversi browser?

+1

Hai trovato una buona risposta a questo? –

+1

No, non proprio. A peggiorare le cose, c'è un browser principale (ho dimenticato quale) che visualizza una finestra di dialogo se il sito cerca di superare il limite di archiviazione. Lo sviluppatore web non ha modo di personalizzare questo messaggio, quindi dirà qualcosa come "questo sito sta cercando di superare il limite di archiviazione", che è un'esperienza utente molto negativa. Per questo motivo, la mia azienda ha deciso di non utilizzare l'archiviazione locale per il nostro caso d'uso e di utilizzare il meccanismo predefinito di memorizzazione nella cache del browser invece di URL che sembrano file javascript ma in realtà contengono solo definizioni di oggetti generate dinamicamente. – Kidburla

+0

Ho scritto un modulo che si occupa di parlare con localStorage in modo che non superi mai il massimo consentito, se supera i 4mb svuota le voci più vecchie che ha fino a quando non è passato sotto i 3mb. inoltre la quantità di byte utilizzata ogni volta viene aggiornata ogni volta che il sistema aggiunge o rimuove da esso, il che significa che è possibile ottenere la quantità di byte attualmente utilizzata con il tempo di ricerca big-o 1. –

risposta

2

AFAIK, non esiste alcun metodo nell'oggetto localStorage per determinarne le dimensioni. Tuttavia, provare a scrivere una quantità di dati che supera il limite di archiviazione si tradurrà in un'eccezione che è possibile rilevare.

Date un'occhiata a http://arty.name/localstorage.html

In sostanza, si può avvolgere la funzione di scrittura in un blocco try...catch come questo:

function write(value, name) { 
    try { 
     localStorage.field = value; 
     return true; 
    } catch (e) { 
     return false; 
    } 
} 
+1

Ciao, sì, ho visto l'esempio su quel sito, e dal mio post, ho notato che cattura un'eccezione. Tuttavia mi sono chiesto se c'è un modo per testare se quell'eccezione è della forma corretta? Ad esempio, nel mio browser (Firefox) il nome dell'eccezione è "NS_ERROR_DOM_QUOTA_REACHED", ma penso che sia specifico per Firefox. Penso che ci dovrebbe essere qualche biblioteca per affrontare questo genere di cose !! – Kidburla

+0

Inoltre, per quel sito, non era chiaro se la quota fosse per localStorage e sessionStorage, o solo uno o l'altro ... – Kidburla

Problemi correlati