2016-06-08 7 views
4

Ich baue eine mobile Web-App, die auf Caching angewiesen ist. Wenn mein Cache zu viel Speicher verwendet ich diese Nachricht in der mobilen Safari zu sehen ...Können Sie in JavaScript einen Fehler wegen zu wenig Arbeitsspeicher abfangen

„Ein Problem mit dieser Webseite aufgetreten, so wurde es neu geladen“.

Ohne Intervention wird die Seite neu geladen und das gleiche noch ein paar Mal wiederholt, bis es aufgibt.

Gibt es Ereignisse, die ich erfassen kann, Informationen, die ich überwachen kann, oder Einstellungen, die ich ändern kann, um ein Caching-System zu erstellen, das widerstandsfähiger ist als das erneute Laden von Seiten?

Chrome hat window.performace.memory, aber ich kann anscheinend nichts in Bezug auf die Lösung meines Problems in Mobile Safari finden. Try/catch-Anweisungen und onBeforeUnload-Ereignisse verhindern nicht, dass die Seite geladen wird, oder bieten die Möglichkeit, den Cache zu löschen/zu reduzieren.

Antwort

1

Hilft das?

Error handling "Out of Memory Exception" in browser?

var localStorageSpace = function(){ 
var allStrings = ''; 
for(var key in window.localStorage){ 
    if(window.localStorage.hasOwnProperty(key)){ 
     allStrings += window.localStorage[key]; 
    } 
} 
return allStrings ? 3 + ((allStrings.length*16)/(8*1024)) + ' KB' : 'Empty (0 KB)'; 
}; 

var storageIsFull = function() { 
var size = localStorageSpace(); // old size 

// try to add data 
var er; 
try { 
    window.localStorage.setItem("test-size", "1"); 
} catch(er) {} 

// check if data added 
var isFull = (size === localStorageSpace()); 
window.localStorage.removeItem("test-size"); 

return isFull; 

}

+0

Ich bin mit localstorage nicht, aber Ihr vorgeschlagene System beruht auf der Speicher Einschränkungen dieser Funktion zu wissen, ich weiß nicht, wie viel Speicher dort verfügbar ist, die ist das Herz des Problems. –

+0

Ein weiterer hilfreicher Link. http://stackoverflow.com/questions/23506064/how-do-you-detect-memory-limits-in-javascript –